Python 列表推导中的多个操作

37 投票
8 回答
51276 浏览
提问于 2025-04-17 03:52

我想知道如何在列表推导式中执行多个命令。

你能给我一个简单的例子吗,比如:

[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') 

列表推导式是非常棒的东西,就像满满的独角兽和巧克力,但它并不是解决所有问题的办法。

撰写回答