使用lambda或list comprehesion创建带循环的列表

时间:2017-06-27 20:26:31

标签: python python-3.6

对于下面的代码,如何使用lambda函数或使用python list comprehension写入一行?

let list = document.selectElementsByTagName('li')

3 个答案:

答案 0 :(得分:3)

请注意,您的函数会输出49 'A' s和51 'B' s。我不确定这是否是故意的。

获得50/50的最简单方法是:

['A'] * 50 + ['B'] * 50

如果你想定义一个lambda:

>>> a_or_b = lambda x: 'AB'[x>50]
>>> [a_or_b(x) for x in range(1,101)]
['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']

作为一个单行:

['AB'[x>50] for x in range(1,101)]

['AB'[x>=50] for x in range(100)]

这些理解使用False0True1'AB'[0]'A'和'AB'的事实[1] is“B'`。

答案 1 :(得分:3)

您可以在列表理解中使用三元条件:

lst = ['A' if i < 50 else 'B' for i in range(1, 101)]

答案 2 :(得分:1)

代码,反映你的代码,就像这样:

def f():
    return ['A' if i < 50 else 'B' for i in range(1,101)]