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

标签 python indexing tuples list-comprehension slice

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

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/

相关文章:

Matlab求向量中重复元素的间隔

python - 返回列表中任意两项的元组,如果相加等于给定的 int

python - 使用 PyGame 对存储在元组中的 pygame.Surface 进行位 block 传输

python按指定次数拆分

python - 将 psycopg2 安装到 virtualenv 时出现 Gcc 错误(Lubuntu 12.04,python 2.7)

python - 在 CI 服务器虚拟环境上安装包依赖项

mysql - 多列索引在 MySQL 中如何工作?

python - 计算外键关系中出现的次数

sql - INNER JOIN 性能与 '<' 或 '>' 条件

python - 如何用特殊字符填充元组