如何从嵌套列表中提取每个子列表的第一个和最后一个元素?
例如:
x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(x)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
期望的结果-
[[1, 3], [4, 6], [7, 9]]
这是我见过的最接近的-
a = [x[i][i] for i in (0, -1)]
print(a)
#[1, 9]
如何从嵌套列表中提取每个子列表的第一个和最后一个元素?
例如:
x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(x)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
期望的结果-
[[1, 3], [4, 6], [7, 9]]
这是我见过的最接近的-
a = [x[i][i] for i in (0, -1)]
print(a)
#[1, 9]
你的想法是正确的。如果你的列表中的嵌套列表只有一层深度,你可以使用列表推导式和-1索引来访问第一个和最后一个元素,就像你试图做的那样:
a = [[sublist[0],sublist[-1]] for sublist in x]
输出:
>>> a
[[1, 3], [4, 6], [7, 9]]
以下是如何使用列表切片的方法:
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
x = [l[::len(l)-1] for l in x]
print(x)
输出:
[[1, 3], [4, 6], [7, 9]]
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> [a[:1] + a[-1:] for a in x]
[[1, 3], [4, 6], [7, 9]]
list[-1]
语法用于获取列表中的最后一个元素,这正是您想要的。x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for elem in x:
print(elem[0], elem[-1])
这只是以标准格式打印它们,但按照这个顺序将它们放回到一个新列表中将会很简单。
这个有效:
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for item in x:
print(item[0], item[2])
如果您想要精确的结果,请使用以下代码:
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = []
for item in x:
new_list.append([item[0], item[2]])
print(new_list)
x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
out = []
for arr in x:
out.append([arr[0], arr[-1]])
print(out)
输出:
[[1, 3], [4, 6], [7, 9]]
out = [[arr[0], arr[-1]] for arr in x]