Python 列表推导中的多个操作
我想知道如何在列表推导式中执行多个命令。
你能给我一个简单的例子吗,比如:
[print ("bla1") and print ("bla2") for i in list]
所以对于一个长度为4的列表,我会有:
bla1
bla2
bla1
bla2
bla1
bla2
bla1
bla2
奇怪的是,我在文档中没有轻易找到这个信息。(如果你能告诉我为什么我找不到,或者我应该怎么搜索这类内容,那就更好了)。
编辑:好的,根据评论,这个例子确实很糟糕。 我确实想从一个旧的列表创建一个新的列表,但我觉得我需要两个命令来做到这一点。(当然不是简单的打印)。 举个例子,我有一个列表的列表,我想创建一个新的列表,这个新列表是对子列表进行操作的结果。
8 个回答
11
在某些情况下,直接用这两条语句来调用一个函数是可以的。
def f():
print("bla1")
print("bla2")
[f() for i in l]
还可以给这个函数传递一个参数。
def f(i):
print("bla1 %d" % i)
print("bla2")
l = [5,6,7]
[f(i) for i in l]
输出结果:
bla1 5
bla2
bla1 6
bla2
bla1 7
bla2
48
你可以用元组来完成这个任务,像这样:
[(print("bla1"), print("bla2")) for i in list]
这样是可以正常工作的。
45
不要用列表推导式来执行命令。列表推导式是用来创建列表的,不是用来执行命令的。应该用普通的循环来做:
for i in list:
print('bla1')
print('bla2')
列表推导式是非常棒的东西,就像满满的独角兽和巧克力,但它并不是解决所有问题的办法。