我有两个python列表。在第一个列表中,我想删除所有重复项,在第二个列表中,我想删除第一个列表中重复项位置的项目。
例如,从这两个列表中
list_1 = [1,1,2,3]
list_2 = [a,b,c,d]
我想生成这两个:
result_1 = [1,2,3]
result_2 = [a,c,d]
我不在乎,是result_2=[a,c,d]
还是result_2=[b,c,d]
。
当然我可以想办法用简单的for循环解决这个问题,但我想也许有人可以提出更优雅的解决方案。
答案 0 :(得分:2)
你走了。简单而优雅:
>>> list_1 = [1,1,2,3]
>>> list_2 = ['a','b','c','d']
>>> temp = dict(zip(list_1,list_2))
>>> result_1 = temp.keys()
>>> result_2 = temp.values()
>>> result_1
[1, 2, 3]
>>> result_2
['b', 'c', 'd']
由于词典创建了唯一键 - 您可以从zip()
的第二个列表中获得相应值。
答案 1 :(得分:0)
你走了:
list_1, list_2 = zip((list_1[0], list_2[0]), *(item[:2] for item in zip(list_1[1:], list_2[1:], list_1) if item[0] != item[2]))
print list_1
print list_2
输出:
(0, 1, 3)
('a', 'b', 'd')
这是否比简单的for循环实现更清晰是另一回事。
答案 2 :(得分:0)
from collections import Counter
def find_duplicates(list_given):
mycal = Counter(list_given)
return [k for k in mycal.keys() if mycal[k]> 1]
list_1 = [1,1,2,3]
list_2 = ['a','b','c','d']
list_dup = find_duplicates(list_1)
for x in list_dup:
if x in list_1:
list_2.remove(list_2[list_1.index(x)])
print list_2
#['b','c','d']
#For simply removing duplicates from a python list:
# list_with_no_duplicates = list(set(list_with_duplicates))