mRt*_*mRt 2 python loops nested
考虑一下:
>>> a = [("one","two"), ("bad","good")]
>>> for i in a:
... for x in i:
... print x
...
one
two
bad
good
Run Code Online (Sandbox Code Playgroud)
如何编写此代码,但使用如下语法:
for i in a:
print [x for x in i]
Run Code Online (Sandbox Code Playgroud)
显然,这不起作用,它打印:
['one', 'two']
['bad', 'good']
Run Code Online (Sandbox Code Playgroud)
我想要相同的输出.可以吗?
列表推导和生成器仅设计用作表达式,而打印是一种语句.虽然你可以通过这样做来影响你想要做的事情
from __future__ import print_function
for x in a:
[print(each) for each in x]
Run Code Online (Sandbox Code Playgroud)
这样做是令人惊讶的unpythonic,并导致生成一个你实际上不需要的列表.您可以做的最好的事情就是for在原始示例中编写嵌套循环.
举个例子,你可以这样做:
a = [("one","two"), ("bad","good")]
for x in sum(map(list, a), []):
print x
Run Code Online (Sandbox Code Playgroud)
但是,一旦列表变大,这可能变得非常缓慢.
更好的方法就像Tim Pietzcker建议的那样:
from itertools import chain
for x in chain(*a):
print x
Run Code Online (Sandbox Code Playgroud)
使用星号表示法,*a允许您在列表中包含n个元组.
| 归档时间: |
|
| 查看次数: |
12146 次 |
| 最近记录: |