簡體   English   中英

如何從 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']

在這里我需要 output 因為列表由列表中的 5,6,7 組成,即

[5,6,7]

所以為此我嘗試如下,

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

當我在 for 循環內打印 s 時,我得到 output 但如果我在循環外打印 output 只是 7。請幫助我

使用列表理解僅在一行中嘗試此操作:

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

s將包含您想要的 output。

您可以使用列表理解來執行此操作並獲取字符串……

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]

我在第二行中將列表理解拆分為多行,因為我們對值做了很多工作。 閱讀起來似乎更清晰。

您遇到的問題是因為您在循環中用e[3]的值替換s而不是將e[3]附加到列表s - 試試這個:

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

雖然這應該按預期工作,但值得注意 Mehrdad Pedramfar 對這種提取的推導式的使用更好,盡管對於外行來說推導式可能難以閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM