首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Python中的嵌套列表中移除列

从Python中的嵌套列表中移除列
EN

Stack Overflow用户
提问于 2014-04-02 09:43:14
回答 4查看 33.1K关注 0票数 25

我需要帮助来弄清楚如何从嵌套列表中删除一个‘列’来修改它。

假设我有

代码语言:javascript
复制
L = [[1,2,3,4],
     [5,6,7,8],
     [9,1,2,3]]

我想删除第二列(因此值为2,6,1)以获得:

代码语言:javascript
复制
L = [[1,3,4],
     [5,7,8],
     [9,2,3]]

我纠结于如何只删除一列来修改列表。我以前做过类似的事情吗?除了我们打印它,当然在这种情况下它不会工作,因为我认为break与我想要的列表中的其他值冲突。

代码语言:javascript
复制
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

那么,如何修改这个嵌套列表呢?我的想法是否正确,将它与我发布的代码进行比较,或者这需要一些不同的东西?

EN

回答 4

Stack Overflow用户

发布于 2014-04-02 09:45:57

您只需使用del从每一行中删除适当的元素

代码语言:javascript
复制
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]]
票数 24
EN

Stack Overflow用户

发布于 2014-04-02 14:40:01

使用map-lambda

代码语言:javascript
复制
print map(lambda x: x[:1]+x[2:], L)
票数 6
EN

Stack Overflow用户

发布于 2014-04-02 09:50:19

这里有一种方法,更新后接受了小次郎的建议。

代码语言:javascript
复制
>>> L[:] = [i[:1]+i[2:] for i in L]
>>> L
[[1, 3, 4], [5, 7, 8], [9, 2, 3]]

您可以对此进行泛化,以删除任何列:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22800028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档