我有一个压缩对的列表(例如A)
link B
我可以删除第一个和第二个条目彼此相等的所有对的最佳方式(并创建一个新列表)?
在上面的例子中( A ),我想删除的对是(0,0),(1,1)和(2,2)。在这个例子中,我希望新列表看起来像这样。
A = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)]
答案 0 :(得分:4)
你可以使用简单的列表理解和if子句,为你想要保留的所有不等对返回True
:
>>> A = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)]
>>> [(x, y) for x, y in A if x != y]
[(0, 1), (0, 6), (0, 7), (1, 3)]
答案 1 :(得分:1)
使用filter
,它将一个判断函数作为第一个参数来告诉要保留哪个元素,将可迭代列表作为第二个参数,lambda
定义一个匿名函数。
A_new = filter(lambda x: x[0] != x[1], A)
答案 2 :(得分:1)
您可以使用void Start(){
StartCoroutine (Test());
}
void Update(){
print ("in update");
}
:
list comprehension
输出:
a = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)]
final = [k for k in a if k[0] != k[1]]