访问列表列表中每个列表的 n:th 个元素

Access n:th element of every list in list of lists

我在 python 中遇到问题,我需要做的一步是访问列表列表中每个列表的第二个元素。名单是:

[(0, 'Gallery', 'PROPN', 'nsubj'), (1, 'unveils', 'VERB', 'root'), (2, 'interactive', 'ADJ', 'amod')]

[(0, 'A', 'DET' 'det'), (1 'Christmas' , 'PROPN', 'compound'), (2, 'tree' ,'NOUN', 'nsubjpass')]

列表就这样继续下去,每个列表都有不同的句子。

我想做的是访问每个元组的每个列表的第三个(索引 2)元素。所以从第一个列表中,我想得到:

  1. PROPN(来自 'Gallery')
  2. 动词(来自 'unveils')
  3. 调整(来自 'interactive')

从第二个列表中我想得到:

  1. DET(来自 'A')
  2. PROPN(来自 'Christmas')
  3. 名词(来自'nsubjpass)

我尝试做的是:

for word in list:
      print(list[word[0]][2])

但这只输出第一个列表中的第二个元素。我尝试创建另一个 foor 循环但没有用,我怀疑我做错了但我不确定如何解决它

不胜感激

提前致谢!

当您在 for 循环中枚举列表时:

for word in words:
    pass // do something

您已经访问了列表中的元素并将其存储在word

因此,循环中的 word[0] 将访问单词元组中的第一个元素,这不是您想要做的。

相反,您想要访问元组中的 word[2],因此这样的事情应该可行:

first_list = [(0, 'Gallery', 'PROPN', 'nsubj'), (1, 'unveils', 'VERB', 'root'), (2, 'interactive', 'ADJ', 'amod')]

second_list = [(0, 'A', 'DET' 'det'), (1, 'Christmas' , 'PROPN', 'compound'), (2, 'tree' ,'NOUN', 'nsubjpass')]

def print_word_pos(words):
    for word in words:
        print(word[2])

print_word_pos(first_list)
print_word_pos(second_list)

另一件事是你不应该将你的列表命名为 list 因为 list 是一个保留的 python 关键字并且可能(将)在以后引起冲突。

现在,如果合并前两个列表,您需要遍历每个列表,然后针对该列表中的每个单词,打印出词性。

def print_word_pos(list_of_words):
    for words in list_of_words:
        for word in words:
            print(word[2])

word= [[(0, 'Gallery', 'PROPN', 'nsubj'), (1, 'unveils', 'VERB', 'root'), (2, 'interactive', 'ADJ', 'amod')],[(0, 'A', 'DET' 'det'), (1 ,'Christmas' , 'PROPN', 'compound'), (2, 'tree' ,'NOUN', 'nsubjpass')]]

[j[2] for i in word for j in i] ==> 输出 ['PROPN', 'VERB', 'ADJ', 'DETdet', 'PROPN', 'NOUN']

[j[1] for i in word for j in i] ==> 输出 ['Gallery', 'unveils', 'interactive', 'A', 'Christmas', 'tree']

你应该试试:

all_my_lists= [
    [(0, 'Gallery', 'PROPN', 'nsubj'), (1, 'unveils', 'VERB', 'root'), (2, 'interactive', 'ADJ', 'amod')],
    [(0, 'A', 'DET' 'det'), (1, 'Christmas' , 'PROPN', 'compound'), (2, 'tree' ,'NOUN', 'nsubjpass')]
]

for my_list in all_my_lists:
    for tup in my_list:
        print(tup[2])

第一个循环遍历 my_lists 列表中的每个子列表。

第二个循环遍历每个元组(带有'(,)'括号的集合。 即元组 = (0, 'Gallery', 'PROPN', 'nsubj') 并打印第三个元素。

试试这个代码:

`对于列表中的 sub_list_temp:

for temp_tuple in sub_list_temp:

    print(temp_tuple[2])

`