假设您有一个元组列表
,如下所示:
list_of_tuples =
[('11','12','13'),('21','22','23'),('31','32','33'),('41','42','43')]
现在我想对这个列表或元组进行切片,这样我就有了(一个新的)列表,每个元组只有前两个条目。所以,我想得到这个:
new_list = [('11','12'),('21','22'),('31','32'),('41','42')]
我的第一次尝试是使用类似 new_list = list_of_tuples[:][0:2]
的语法。第一个括号 [:]
索引整个列表,[:2]
获取每个元组的元素 0 和 1。但是,这总是返回前两个元组,包含所有三个原始条目。 (所以,我得到了 [('11','12','13'),('21','22','23')]
)。
为什么它不能像这样工作,这里潜在的 pythonic 行为是什么?我还注意到,[:][:][:]
我写得如何并不重要。
获得我想要的结果的一种方法是编写像这样的列表理解 new_list = [(t[0], t[1]) for t in list_of_tuples]
,但这需要更多代码,我也考虑了我最初的 pythonic 方法。
最佳答案
第一次尝试是这样做的:
new_list = list_of_tuples[:] # Copy of the list
list_of_tuples[:][0:2] # element 0 to 2 of the copy.
因此,您得到 list_of_tuples 的第 2 个元素:
[('11','12','13'),('21','22','23')]
这就是 python 的工作原理 ^^'
编辑:如果你放置多个 [:]
,你只是在多次“复制”原始列表,这就是为什么放置多少并不重要......
关于python - 在列表中切片元组(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816604/