Python列表操作

0 投票
2 回答
1271 浏览
提问于 2025-04-16 05:59

我有一个Python列表

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13]], [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,999] ]

我需要的结果是

alist = [[0,4,8,13], [3, 4, 8, 999]]

这意味着每个列表元素中的前两个和最后两个数字。

我需要一个快速的方法来实现这个,因为列表可能会很大。

2 个回答

1

这个对象其实是一个元组,而不是一个列表。如果你以为它是可以改变的,这可能会让你感到困惑,而且也不太好读。如果你有很长的代码行,可以考虑使用续行符号 \ 来分隔:

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13]], [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8, 999] ]

这样会更清晰一些

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13]], \
        [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8, 999] ]

这也能帮助你发现双括号,这就是为什么它是一个元组。如果是列表的话:

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13], \
        [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8, 999] ]]

如果像哈维尔的回答中提到的列表推导式不能满足你的速度要求,可以考虑使用 numpy 数组。

12

在编程中,有时候我们需要让程序做一些事情,比如处理数据或者执行特定的操作。为了实现这些功能,我们通常会使用一些代码块,这些代码块就像是程序的指令,告诉计算机该做什么。

在这个例子中,

[x[0][:2] + x[-1][-2:] for x in alist]
是一个代码块的占位符,里面可能包含了一些具体的代码。通过这些代码,程序可以完成特定的任务,比如计算、存储信息或者与用户互动。

总之,代码块是编程中非常重要的一部分,它们帮助我们实现各种功能,让程序变得更加智能和实用。

撰写回答