我有名单
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 5, 6, 7]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13]
c = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
我想用
替换它for (i, j, k) in zip(a, b, c):
if i == j:
i = k
print i
else:
continue
但它不能取代所有元素。 欲望输出:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'a', 'b', 'e', 'f', 'g']
我该怎么检查?
答案 0 :(得分:1)
迭代索引列表并从所需列表中获取值。 下次再说清楚了!
new_list = [c[i-1] for i in a]
输出:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'a', 'b', 'e', 'f', 'g']
如果您有列表,我不确定您想要实现的目标。 这是一次尝试..
In [13]: [(k,c[i]) for i,k in enumerate(a)]
Out[13]:
[(5439426, 'evg_grach@mail.ru'),
(5439426, 'sveta1975n@mail.ru'),
(5439426, 'prosto_yan@bk.ru'),
(5439426, 'zarbas@rambler.ru'),
(3653015, 'Platov94@mail.ru'),
(5439426, 'ya.dempsey@yandex.ru'),
(5439426, 'Galina_bogdan@bk.ru'),
(5439426, 'tctmk@yandex.ru'),
(3653015, 'Kiselevsergej1996@mail.ru'),
(5439426, 'zastava_85@mail.ru'),
(5439426, 'Rybochkina.76@mail.ru'),
(5439426, 'upi88@yandex.ru'),
(5439426, 'coh@inbox.ru')]
好的,我想我明白了。 这是一个oneliner,它只返回你的目的“有效”值。
In [17]: [c[b.index(i)] for i in a if i in b]
这是较长的版本,保存每个条目。
Out[17]: ['ya.dempsey@yandex.ru', 'ya.dempsey@yandex.ru']
In [18]: l = []
In [19]: for i in a:
....: if i in b:
....: l.append((i, c[b.index(i)]))
....: else:
....: l.append((i, None))
....:
In [20]: l
Out[20]:
[(5439426, None),
(5439426, None),
(5439426, None),
(5439426, None),
(3653015, 'ya.dempsey@yandex.ru'),
(5439426, None),
(5439426, None),
(5439426, None),
(3653015, 'ya.dempsey@yandex.ru'),
(5439426, None),
(5439426, None),
(5439426, None),
(5439426, None)]