Python 如何通过列表理解中的最后一项
我在试着做一个if,elif列表理解行。。。在其他问题中找到此代码:Python 如何通过列表理解中的最后一项,python,list-comprehension,Python,List Comprehension,我在试着做一个if,elif列表理解行。。。在其他问题中找到此代码: >>> l = [1, 2, 3, 4, 5] >>> ['yes' if v == 1 else 'no' if v == 2 else 'idle' for v in l] ['yes', 'no', 'idle', 'idle', 'idle'] 我的问题是:我可以将最后一个“else”作为第三个动作传递吗? 我已尝试使用pass,但出现语法错误 我有这个: # list = [(c
>>> l = [1, 2, 3, 4, 5]
>>> ['yes' if v == 1 else 'no' if v == 2 else 'idle' for v in l]
['yes', 'no', 'idle', 'idle', 'idle']
我的问题是:我可以将最后一个“else”作为第三个动作传递吗?
我已尝试使用pass,但出现语法错误
我有这个:
# list = [(code, qty),(code, qty)]
>>>storehouse = [('BSA2199',2000),('PPF5239',251),('BSA1212',989)]
>>>buyList = [(cod, 1000) if qty < 200 else (cod, 500) for cod, qty
in storehouse]
#列表=[(代码,数量),(代码,数量)]
>>>仓库=[('BSA2199',2000),('PPF5239',251),('BSA1212',989)]
>>>采购清单=[(cod,1000)如果数量<200,其他(cod,500)对于cod,数量
在仓库里]
我想忽略>1000的项目
谢谢,希望我已经说清楚了(这里的第一个问题)。您需要首先在表达式的外部处筛选所需的值。
在此范围内,您可以选择是/否回答:
['yes' if v == 1 else 'no'
for v in l if v in [1, 2]]
输出:
['yes', 'no']
我可能会将此关系编码到字典中,以便您可以将其用于筛选和映射:
>>> l = [1, 2, 3, 4, 5]
>>> d = {1: 'yes', 2: 'no'}
>>> [d[v] for v in l if v in d]
['yes', 'no']
因此,您的预期输出是['yes','no']
?['yes'如果v==1,那么对于l中的v如果v在{1,2}中,那么对于l中的v,您的预期输出是'no'
?实际上,您可以使用如果[x+1对于范围(10)中的x,如果x%2]
@DakshinamurthyKarra列表理解快速映射/过滤操作[x对于iterable if中的x]
我的坏消息。实际上我用它来过滤。