mb5*_*567 5 python list python-3.x
我有三个列表X,Y,Z如下:
X: [1, 1, 2, 3, 4, 5, 5, 5]
Y: [3, 3, 2, 6, 7, 1, 1, 2]
Z: [0, 0, 1, 1, 2, 3, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我试图在列表的相同索引处删除两个重复的值集,得到如下的缩减列表,所有三个列表在最初和结束时始终具有相同的长度:
X: [2, 3, 4, 5]
Y: [2, 6, 7, 2]
Z: [1, 1, 2, 4]
Run Code Online (Sandbox Code Playgroud)
我尝试使用zip(X,Y,Z)函数,但我无法对其进行索引,而dict.fromkeys只删除其中一个重复项,并将另一个留在新列表中.我希望能够删除这两个.
任何帮助表示赞赏!
使用collections.Counter和zip,您可以计算独特的三胞胎.
然后通过生成器理解删除重复项.
from collections import Counter
X = [1, 1, 2, 3, 4, 5, 5, 5]
Y = [3, 3, 2, 6, 7, 1, 1, 2]
Z = [0, 0, 1, 1, 2, 3, 3, 4]
c = Counter(zip(X, Y, Z))
X, Y, Z = zip(*(k for k, v in c.items() if v == 1))
print(X, Y, Z, sep='\n')
(2, 3, 4, 5)
(2, 6, 7, 2)
(1, 1, 2, 4)
Run Code Online (Sandbox Code Playgroud)
请注意,如果要求排序并且您没有使用Python 3.6+,则可以通过子类化创建"OrderedCounter" collections.OrderedDict.
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |