Kar*_*rus 8 python list-comprehension list python-2.7
在Python 2.7中,我有两个整数列表:
x = [1, 3, 2, 0, 2]
y = [1, 2, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
我想创建一个第三列表,其指示是否在各元件x和y是相同的,以产生:
z = [1, 0, 1, 0, 0]
Run Code Online (Sandbox Code Playgroud)
如何使用列表理解来完成此操作?
我的尝试是:
z = [i == j for i,j in ...]
Run Code Online (Sandbox Code Playgroud)
但我不知道如何完成它.
Bha*_*Rao 22
你在找 zip
z = [i == j for i,j in zip(x,y)]
Run Code Online (Sandbox Code Playgroud)
但您最好添加int调用以获得所需的输出
>>> z = [int(i == j) for i,j in zip(x,y)]
>>> z
[1, 0, 1, 0, 0]
Run Code Online (Sandbox Code Playgroud)
否则你会得到一个像这样的清单 [True, False, True, False, False]
正如ajcr在评论中提到的,如果列表很长,最好使用itertools.izip而不是zip.这是因为它返回迭代器而不是列表.这在文档中提到
像zip()一样,除了它返回迭代器而不是列表.
演示
>>> from itertools import izip
>>> z = [int(i == j) for i,j in izip(x,y)]
>>> z
[1, 0, 1, 0, 0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2021 次 |
| 最近记录: |