list comprehension python中的多个动作

Los*_*_DM 15 python list-comprehension

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

你能给我一个简单的例子:

[print ("bla1") and print ("bla2") for i in list]
Run Code Online (Sandbox Code Playgroud)

所以对于4长度4的列表,我会:

bla1
bla2
bla1
bla2
bla1
bla2
bla1
bla2
Run Code Online (Sandbox Code Playgroud)

相反,我没有在文档中轻易找到它.(如果你能看到一个明显的原因,我没有,并可以让我知道我应该如何搜索更好的东西).

编辑:好的,根据评论,这是一个非常糟糕的例子.我兴趣从旧的创建一个新的,但我觉得我需要两个命令来做到这一点.(当然不是简单的印刷品).例如.我有一个列表列表,我想创建一个列表,该列表是操作子列表的结果.

Pet*_*rin 28

不要将list comprehension用于命令.列表推导用于创建列表,而不是用于命令.使用普通的旧循环:

for i in list:
    print('bla1')
    print('bla2') 
Run Code Online (Sandbox Code Playgroud)

列表理解是充满独角兽和巧克力的奇妙事物,但它们不是一切的解决方案.

  • 你是对的.我澄清了我的意思,希望现在没有负面含义. (2认同)
  • PEP 中是否有任何内容对此进行了具体说明,或者这只是人们倾向于遵循的惯例?我看到很多人使用 list-comps 作为命令。 (2认同)

Aha*_*our 13

您可以使用元组来完成这样的工作:

[(print("bla1"), print("bla2")) for i in list]
Run Code Online (Sandbox Code Playgroud)

它的工作正常.


pla*_*att 7

在某些情况下,调用包含两个语句的函数可能是可以接受的。

def f():
   print("bla1")
   print("bla2")

[f() for i in l]
Run Code Online (Sandbox Code Playgroud)

也可以向函数发送参数。

def f(i):
   print("bla1 %d" % i)
   print("bla2")

l = [5,6,7]

[f(i) for i in l]
Run Code Online (Sandbox Code Playgroud)

输出:

bla1 5
bla2
bla1 6
bla2
bla1 7
bla2
Run Code Online (Sandbox Code Playgroud)