我有一个len 20的列表列表,我想动态地从中创建一个相同大小的元组元组,因为元组有点快, 所以我有一个类似
的列表 my_list=[[1,2,3,4],[5,7,8,9],[7,8,5,3]]
我想创建一个像这样的元组
my_tuple=((1,2,3,4),(5,7,8,9),(7,8,5,3))
我试过
>>> my_tuple=tuple(my_list)
>>> ([1, 2, 3, 4], [5, 7, 8, 9], [7, 8, 5, 3])
并且正在做
>>> for i in my_list:
my_tuple=my_tuple+tuple(i)
>>> (1, 2, 3, 4, 5, 7, 8, 9, 7, 8, 5, 3)
所以我通过硬编码像
这样的列表项的索引来创建元组my_tuple=tuple((tuple(my_list[0]),tuple(my_list[1]),tuple(my_list[2])))
有没有办法可以动态创建元组,因为它很长?
答案 0 :(得分:4)
简单地
>>> my_tuple = tuple(tuple(i) for i in my_list)
>>> print my_tuple
((1, 2, 3, 4), (5, 7, 8, 9), (7, 8, 5, 3))
关于你的元组“更快”的断言,你应该分析你的代码并权衡任何可能的收益与转换成本。通常,当我需要一个不可变的集合时,我会使用tuple
。
答案 1 :(得分:1)
试试这个
>>>tuple(map(tuple, my_list))
((1, 2, 3, 4), (5, 7, 8, 9), (7, 8, 5, 3))