Skip to main content
 首页 » 编程设计

python之在列表中切片元组(python)

2025年05月04日13TianFang

假设您有一个元组列表,如下所示:

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 的工作原理 ^^'

编辑:如果你放置多个 [:],你只是在多次“复制”原始列表,这就是为什么放置多少并不重要......