我是一名新鲜的python初学者,正在尝试提取嵌套列表的前n个元素中的第一个元素。但这到目前为止还行不通。
说:
list = [["Anna","w",15],["Peter","m",20],["Zani","m",10], ["Lily","w",19]]
目标:
list_new = ['Anna','Peter','Zani'...(#until the n-th elements)]
如果我要在列表中所有元素的第一个元素,应该是:
for i in list:
for j in i:
print j[0]
但是,如果我只想删除列表中第n个元素的第一个元素,而不是所有元素,该怎么办?
例如前两个元素: 我尝试过:
for i in list[0:2]:
for j in i:
print j[0]
但是没有用。
此外,如果我以后要使用
给出n的值def sheet(list, n)
和return语句,我该怎么办?
非常感谢您!
答案 0 :(得分:2)
lst = [["Anna","w",15],["Peter","m",20],["Zani","m",10], ["Lily","w",19]]
n = 2
print(lst[n][0])
输出: 扎尼
---更新了问题中添加的详细信息的答案---
l = [["Anna","w",15],["Peter","m",20],["Zani","m",10], ["Lily","w",19]]
n = 2
for i in range(n):
print(l[i][0])
输出:
安娜
彼得
答案 1 :(得分:1)
您可以使用列表推导。给定列表L
的输入列表:
L_new = [i[0] for i in L[:n]]
从功能上讲,您可以使用operator.itemgetter
。此外,您可以使用itertools.islice
来避免创建中介列表:
from operator import itemgetter
from itertools import islice
L_new = list(map(itemgetter(0), islice(L, 0, n)))
答案 2 :(得分:0)
请注意,list是为python中的内置函数list()
保留的,请勿将'list'用作变量名。
要获取每个嵌套列表的第一个元素:
l = [["Anna","w",15],["Peter","m",20],["Zani","m",10], ["Lily","w",19]]
for e in l:
print(e[0])
打印:
Anna
Peter
Zani
Lily
要对第n个第一个元素执行相同的操作:
def sheet(l, n):
return [e[0] for e in l[:n]]
sheet(l, 3)
返回
['Anna', 'Peter', 'Zani']
编辑
def sheet(l, n):
for e in l[:n]
return [e[0]]
此代码仅返回['Anna']
,因为return
语句停止了该功能。 for循环在第一个元素处停止。
def sheet(l, n):
return [e[0] for e in l[:n]]
等效于:
def sheet(l, n):
result = [e[0] for e in l[:n]]
return result
等效于:
def sheet(l, n):
result = []
for e in l[:n]:
result.append(e[0])
return result
for循环可以在return语句之前结束。
更多信息here。
答案 3 :(得分:0)
只需尝试一下,它就会更容易供您了解:
n = int(input())
lst = [["Anna","w",15],["Peter","m",20],["Zani","m",10], ["Lily","w",19]]
lst_new = []
for item in lst[:n]:
name, *rest = item
lst_new.append(name)