这是我的名单
list1 = [1,2,3,4,5,6,7,8,9,10,11,12]
我试过这么做
it = iter(list1)
chunked_lists = zip(it,it,it)
chunked_lists is now = [(1,2,3),(4,5,6),(7,8,9),(10,11,12)]
现在我想在每个块中添加一个'data',使其看起来像
[(1,2,3,'data'),(4,5,6,'data')....etc]
但是元组是不可变的,我必须销毁它们,附加它们,然后再创建它们。你知道吗
有没有更好的方法在python中实现这一点?你知道吗
这应该是一种线性时间方式:
如果我没有忽略一些复杂的Python,since tuple() has complexity O(n),the slice accessor has complexity O(k),
+["data"]
引起的开销并不比简单地在列表末尾附加一个节点(即O(1)
)大,那么它应该是O((len(list1) / k) * k ^ 2)
又名O(n k)
,在您的例子中k
固定为3。你知道吗指:
[list1[x:x+3]+["data"] for x in (0, 3, ... 12)]
又名:
对于奇数列表,它也表现得很好:
您可以使用^{} 创建一个包含
data
的新迭代器,然后对以前的迭代器和新的重复迭代器应用zip
函数:注意,正如@Padraic Cunningham在his answer中提到的那样,不需要调用
itertools.repeat
中的len
函数如果要在创建元组后修改元组列表,可以使用列表理解通过向元组添加新元素来修改元组。你知道吗
示例:
相关问题 更多 >
编程相关推荐