如何从数组制作元组

时间:2019-01-05 04:33:49

标签: python

我在数组中有一个值列表:

 departamentos = ["Piura", "Lima"]

我想将其转换为:

 departamentos = (("Piura", "Piura"), ("Lima", "Lima"),)

我已经尝试过了:

for i in departamentos:
     mis_departamentos_b  = mis_departamentos + ((i, i))

但是它仅将最后一项作为元组返回。

mis_departamentos_b
('Lima', 'Lima')

4 个答案:

答案 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