我在数组中有一个值列表:
departamentos = ["Piura", "Lima"]
我想将其转换为:
departamentos = (("Piura", "Piura"), ("Lima", "Lima"),)
我已经尝试过了:
for i in departamentos:
mis_departamentos_b = mis_departamentos + ((i, i))
但是它仅将最后一项作为元组返回。
mis_departamentos_b
('Lima', 'Lima')
答案 0 :(得分:12)
怎么样
tuple((x,x) for x in departamentos)
(('Piura', 'Piura'), ('Lima', 'Lima'))
答案 1 :(得分:0)
除了@Claus的答案,您还可以使用map
:
tuple(map(lambda d: (d, d), departamentos))
(('Piura', 'Piura'), ('Lima', 'Lima'))
答案 2 :(得分:0)
还有另一种方法可以做到如下。
>>> departamentos = ["Piura", "Lima"]
>>> t = tuple(((name, ) * 2 for name in departamentos))
>>> t
(('Piura', 'Piura'), ('Lima', 'Lima'))
>>>
详细:
>>> departamentos = ["Piura", "Lima"]
>>>
>>> t = ((name, ) * 2 for name in departamentos)
>>> t
<generator object <genexpr> at 0x000001D13A5F8518>
>>>
>>> tuple(t)
(('Piura', 'Piura'), ('Lima', 'Lima'))
>>>
答案 3 :(得分:-1)
问题出在您的变量中。下面是修改后的代码。您正在使用mis_departamentos_b并且仅对其进行分配,因此Plura Plura的先前值将被Lima Lima的下一个值覆盖
departamentos = ["Piura", "Lima"]
mis_departamentos = ()
for i in departamentos:
mis_departamentos = mis_departamentos + ((i, i))
print(mis_departame