Python列表操作
问题描述:
我有一个Python列表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]]
这意味着在每一个元素ALIST前两个和最后两个数字。
我需要一个快速的方法来做到这一点,因为列表可能很大。
答
[x[0][:2] + x[-1][-2:] for x in alist]
答
该对象实际上是一个元组,而不是一个列表。如果你期望它是可变的并且很难阅读,这可能会让你失望。考虑使用连字符\长线路:
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的阵列。
你在模拟什么奇怪的数据结构? – Daenyth 2010-10-24 02:06:08
我敢打赌,这是作业。只有他们离开了[作业]标签。问这里比想更容易。 – 2010-10-24 03:29:23