如何在python中删除嵌套列表中的特定元素

时间:2016-12-14 23:19:45

标签: python arrays list nested

假设我得到以下数组:

array = [[1, 2, 3, 1],
         [4, 5, 6, 4],
         [7, 8, 9, 7], 
         [7, 8, 9, 7]]

我想删除数组中的第一个和最后一个列表,而不是中间列表的第一个和最后一个元素(返回应该基本上是:[[5, 6], [8, 9]])。

我尝试了以下内容:

array.remove(array[0])
array.remove(array[-1])
for i in array:
     array.remove(i[0])
     array.remove(i[-1])

但我总是得到ValueError: list.remove(x): x not in list。为什么呢?

4 个答案:

答案 0 :(得分:1)

获得此功能的简单方法是使用 list comprehension 表达式对t列表进行切片,如:

f

array持有的最终价值为:

array = [[1, 2, 3, 1],
         [4, 5, 6, 4],
         [7, 8, 9, 7],
         [7, 8, 9, 7]]

array = [a[1:-1]for a in array[1:-1]]

此处array返回跳过[[5, 6], [8, 9]] 列表中第一个和最后一个元素的列表

答案 1 :(得分:1)

您应该从子列表中删除项目,而不是父列表:

del

您还可以使用>>> for i in array: ... del i[0], i[-1] >>> array [[5, 6], [8, 9]] 删除一行中的两个项目:

$user->id = $user->uid;

答案 2 :(得分:1)

使用numpy

import numpy as np

array = np.array(array)
array[1:3, 1:3]

返回

array([[5, 6],
       [8, 9]])

答案 3 :(得分:0)

或者<list>.pop

array = [[1, 2, 3, 1],
         [4, 5, 6, 4],
         [7, 8, 9, 7], 
         [7, 8, 9, 7]]

for i in range(len(array)): # range(len(<list>)) converts 'i' to the list inedx number.
    array[i].pop(0)
    array[i].pop(-1)

要回答你的问题,

.remove删除第一个匹配值,而不是特定索引。 .pop在哪里删除索引。

希望这有帮助!