对于下面的代码,如何使用lambda函数或使用python list comprehension写入一行?
let list = document.selectElementsByTagName('li')
答案 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)]
这些理解使用False
为0
且True
为1
,'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)]