切片 2D Python 列表

Slicing 2D Python List

假设我有一个列表:

list = [[1, 2, 3, 4],
        ['a', 'b', 'c', 'd'], 
        [9, 8, 7, 6]]

我想得到类似的东西:

newList =  [[2, 3, 4],
            ['b', 'c', 'd'],
            [8, 7, 6]]

因此我尝试使用这个解决方案

print(list[0:][1:])

但我得到了这个输出

[['a', 'b', 'c', 'd'],
 [9, 8, 7, 6]]

所以我尝试了

print(list[1:][0:])

但我得到的结果完全一样。

我试图对这个特定主题进行一些研究和实验,但没有任何结果。

您希望矩阵中 行的第 1 到结束元素。

mylist = [[1, 2, 3, 4],
        ['a', 'b', 'c', 'd'], 
        [9, 8, 7, 6]]

new_list = [row[1:] for row in mylist]

首先 - 不要将您的列表命名为“列表”!

a = [[1, 2, 3, 4],
    ['a', 'b', 'c', 'd'],
    [9, 8, 7, 6]]
b = [x[1:] for x in a]
print(b)

[[2, 3, 4], ['b', 'c', 'd'], [8, 7, 6]]

我想解释一下,你用这个做了什么

print(list[0:][1:])
print(list[1:][0:])

首先注意 python 使用从 0 开始的索引,即对于 [1,2,3] 有第 0 个元素、第 1 个元素和第 2 个元素。

[0:] 表示从第 0 个元素开始获取列表元素,这将为您提供列表的副本,[1:] 表示从第 1 个元素开始获取列表元素,这将为您提供除第 0 个以外的所有列表元素。因此,这两行彼此等价于

print(list[1:])

您可能需要使用理解或 map 的输出,如下所示

list1 = [[1, 2, 3, 4], ['a', 'b', 'c', 'd'], [9, 8, 7, 6]]
list2 = list(map(lambda x:x[1:],list1))
print(list2)

输出

[[2, 3, 4], ['b', 'c', 'd'], [8, 7, 6]]

lambda 这里是无名函数,注意这里的理解更易读,但如果你之前使用过具有类似功能的语言,例如JavaScript's map