Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过列表理解中的最后一项_Python_List Comprehension - Fatal编程技术网

Python 如何通过列表理解中的最后一项

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

我在试着做一个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 = [(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]
我的坏消息。实际上我用它来过滤。