Python列表理解:在if else语句中分配值

时间:2018-07-13 05:36:24

标签: python list-comprehension

我正在尝试在python中为for循环编写下面的列表理解

num_list = []

for num in range(10):
if num % 2 == 0:
    num_list.append('EVEN')
else:
    num_list.append('ODD')

我写了

[num if num % 2 == 0  'EVEN' else 'ODD' for num in range(10)]

[num if num % 2 == 0  then 'EVEN' else 'ODD' for num in range(10)]

但是两者都给出语法错误并且无效。

我是pyhton的新手,所以不确定是否可以将其转换为理解力。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

三元表达式的工作方式略有不同:

['EVEN' if num % 2 == 0 else 'ODD' for num in range(10)]

虽然我认为

['ODD' if num % 2 else 'EVEN' for num in range(10)]

看起来更好。

这样想:

[('ODD' if num % 2 else 'EVEN') for num in range(10)]

可以使用方括号来进行说明,但这不是必需的,并且可能使人们误以为您正在构建元组或生成器表达式。

答案 1 :(得分:0)

应该是:

>>> ['EVEN' if num%2 == 0 else 'ODD' for num in range(10)]

#driver值

OUT : ['EVEN', 'ODD', 'EVEN', 'ODD', 'EVEN', 'ODD', 'EVEN', 'ODD', 'EVEN', 'ODD']

答案 2 :(得分:0)

['EVEN' if num % 2 == 0 else 'ODD' for num in range(10)]

因此,理想情况下,我们需要返回或推入列表的位置是从列表理解开始的地方。让我们尝试从您的for循环中构建它-

num_list = []

for num in range(10):            #  for num in range(10) (third part)
    if num % 2 == 0:
        num_list.append('EVEN')  # 'EVEN' if num % 2 == 0 (first part)
    else:
        num_list.append('ODD')   #  else 'ODD' (second part)

您可以看看this来进一步了解列表理解。

答案 3 :(得分:-1)

如果您想知道哪个数字是偶数或奇数,请尝试使用

print([str(nub) + ' Odd' if nub % 2 != 0 else str(nub) + ' Even' for nub in range(1, 11)])

输出:[“ 1奇数”,“ 2偶数”,“ 3奇数”,“ 4偶数”,“ 5奇数”,“ 6偶数”,“ 7奇数”,“ 8偶数”,“ 9奇数” ,'10偶数']