我正在尝试在Python 3中编写if
语句:
if n % 2 == 0:
list.append(2)
elif n % 3 == 0:
list.append(3)
elif n % 5 == 0:
list.append(5)
有更多空间保守的做法吗? 我想过使用lambda表达式,但这些代码似乎不起作用。
if (lambda i: n % i == 0)(i in [2,3,5])
list.append(i)
和
if (lambda i: n % i == 0)([2,3,5])
list.append(i)
有没有办法使用lambda表达式?或者我需要一个不同的方法?另外,如果我使用lambda表达式,我是否可以使用条件匹配的i值(比如将它附加到列表中)?
答案 0 :(得分:2)
>>> n = 33
>>> [i for i in (2, 3, 5) if n % i == 0]
[3]
>>> n = 10
>>> [i for i in (2, 3, 5) if n % i == 0]
[2, 5]
答案 1 :(得分:1)
要在问题中获得与if
/ elif
/ elif
语句相同的结果:
your_list += next(([d] for d in [2, 3, 5] if n % d == 0), [])
注意:只有第一个除数会附加到列表中。请参阅find first element in a sequence that matches a predicate。
答案 2 :(得分:0)
我不能用lambda函数来做,但我认为这种方法有帮助你
list = [1,2,3]
n = 9
[list.append(i) for i in (2,3,5) if n % i == 0]
print list
[1, 2, 3, 3]
依旧......
答案 3 :(得分:0)
与J.F. Sebastian的回答一样,这只给出了第一个除数:
res_list.extend([i for i in (2, 3, 5) if n % i == 0][:1])
[:1]
只占用列表的第一个元素
如果列表为空,则给出一个空列表(因为一个空的片段
列表总是一个空列表。)
现在,extend()
将单元素列表添加为单个元素
您的结果列表或零元素列表的任何内容。