如何提取嵌套列表的第n个元素的第一个元素(作为字符串列表)

时间:2018-10-21 11:01:28

标签: python list

我是一名新鲜的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语句,我该怎么办?

非常感谢您!

4 个答案:

答案 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)