簡體   English   中英

Python 3 | 將字符串附加到列表中的項目?

[英]Python 3 | Appending a string to an item in a list?

在嘗試了許多不同的方法來解決此問題之后,例如嵌套的for循環(迭代第一個列表的次數與第二個迭代的長度一樣多),而我嘗試了.join ,但我無法做通緝。


這是問題所在...

我正在使用兩個for循環來追加相同的列表。

第一個for循環:

for friend in individual_friends:
    friends.append(friend.text)

這給了我:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends',
 ...., 
'Jayde Woods\n56 mutual friends\n4 new posts\nFriends']

第二個for循環:

for link in individual_friends_links:
    links = link.get_attribute("href")
    friends.append(links)

這給了我:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends', 
..., '
Jayde Woods\n56 mutual friends\n4 new posts\nFriends', 
'https://m.facebook.com/jodyannelizabeth.lill?ref=bookmarks', 
..., 
'https://m.facebook.com/jayde.woods?ref=bookmarks']

我真正想要的是:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends\nhttps://m.facebook.com/jodyannelizabeth.lill?ref=bookmarks', 
..., 
'Jayde Woods\n56 mutual friends\n4 new posts\nFriends\nhttps://m.facebook.com/jayde.woods?ref=bookmarks']

錯誤

您犯的錯誤是,通過調用append ,您總是會添加到friends末尾

但是對於您的鏈接,您不想添加到friends的末尾,您想要更改已經在friends中的元素的值。

解決方案

您需要這樣的東西:

# create your list of friends
for friend in individual_friends:
    friends.append(friend.text)

# for every *i*th link, look up the *i*th friend in `friends`,
# and modify that value, instead of adding to the end of `friends`.
for link_index, link in enumerate(individual_friend_links):
    friends[link_index] = friends[link_index] + '\n' + link.get_attribute("href")

更好的解決方案

但這很冗長。 不需要for -loops做兩個顯式for 您需要zip ,它將兩個單獨的列表合並為一個由2個元組組成的列表,並且與上述功能完全相同。

for friend, link in zip(individual_friends, individual_friends_links):
    friends.append(friend.text + '\n' + link.get_attribute("href")) 

暫無
暫無

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

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