如何从 python 中的 for 循环获取列表的值?

How to get a value of list from for loop in python?

我有清单:

 l = ['dataset/Frames_Sentence_Level/are you free today/5/free (3) 22.jpg','dataset/Frames_Sentence_Level/are you free today/6/free (3) 24.jpg','dataset/Frames_Sentence_Level/are you free today/7/free (3) 23.jpg']

这里我需要输出,因为列表由列表中的 5,6,7 组成,即

[5,6,7]

为此,我尝试了如下所示,

s= []
for i in l:  
  e = i.split('/')`
  s = e[3]
print(s)

当我在 for 循环内打印 s 时,我得到了输出,但如果我在循环外打印,输出只是 7。请帮帮我

尝试使用列表推导在一行中完成此操作:

s = [i.split('/')[3] for i in l]

s 将包含您想要的输出。

您可以使用列表理解来执行此操作并获取字符串……

l = ['dataset/Frames_Sentence_Level/are you free today/5/free (3) 22.jpg','dataset/Frames_Sentence_Level/are you free today/6/free (3) 24.jpg','dataset/Frames_Sentence_Level/are you free today/7/free (3) 23.jpg']
out_lst = [fname.split("/")[3] for fname in l]
print(out_lst)

# Output: [‘5’, ‘6’, ‘7’]

或者获取整数……

l = ['dataset/Frames_Sentence_Level/are you free today/5/free (3) 22.jpg','dataset/Frames_Sentence_Level/are you free today/6/free (3) 24.jpg','dataset/Frames_Sentence_Level/are you free today/7/free (3) 23.jpg']
out_lst = [int(fname.split("/")[3]) 
           for fname in l]
print(out_lst)

# Output: [5, 6, 7]

我在第二个列表推导式中跨行拆分,因为我们对值做了很多工作。看起来更清晰了。

您遇到的问题是因为您在循环中 s 替换为 e[3] 的值,而不是附加 e[3]到列表 s - 试试这个:

s= []
for i in l:  
  e = i.split('/')`
  s.append(e[3]) # Note this change!
print(s)

虽然这应该按预期工作,但值得注意的是 Mehrdad Pedramfar 对这种提取的理解更好,尽管对于外行的理解可能难以阅读。