我需要帮助来弄清楚如何从嵌套列表中删除一个‘列’来修改它。
假设我有
L = [[1,2,3,4],
[5,6,7,8],
[9,1,2,3]]
我想删除第二列(因此值为2,6,1)以获得:
L = [[1,3,4],
[5,7,8],
[9,2,3]]
我纠结于如何只删除一列来修改列表。我以前做过类似的事情吗?除了我们打印它,当然在这种情况下它不会工作,因为我认为break与我想要的列表中的其他值冲突。
def L_break(L):
i = 0
while i < len(L):
k = 0
while k < len(L[i]):
print( L[i][k] , end = " ")
if k == 1:
break
k = k + 1
print()
i = i + 1
那么,如何修改这个嵌套列表呢?我的想法是否正确,将它与我发布的代码进行比较,或者这需要一些不同的东西?
发布于 2014-04-02 09:45:57
您只需使用del
从每一行中删除适当的元素
L = [[1,2,3,4],
[5,6,7,8],
[9,1,2,3]]
for row in L:
del row[1] # 0 for column 1, 1 for column 2, etc.
print L
# outputs [[1, 3, 4], [5, 7, 8], [9, 2, 3]]
发布于 2014-04-02 14:40:01
使用map-lambda
print map(lambda x: x[:1]+x[2:], L)
发布于 2014-04-02 09:50:19
这里有一种方法,更新后接受了小次郎的建议。
>>> L[:] = [i[:1]+i[2:] for i in L]
>>> L
[[1, 3, 4], [5, 7, 8], [9, 2, 3]]
您可以对此进行泛化,以删除任何列:
def remove_column(matrix, column):
return [row[:column] + row[column+1:] for row in matrix]
# Remove 2nd column
copyofL = remove_column(L, 1) # Column is zero-base, so, 1=second column
https://stackoverflow.com/questions/22800028
复制相似问题