假设我得到以下数组:
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
。为什么呢?
答案 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
在哪里删除索引。
希望这有帮助!