Python 3 |将字符串附加到列表中的项目?

时间:2016-11-12 20:34:23

标签: python for-loop

为此问题尝试了许多不同的方法后,例如嵌套的for循环(迭代第一个列表的次数与第二次迭代的次数一样多),并且我已尝试{{1我无法做到我想做的事。

以下是问题......

我使用两个.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']

1 个答案:

答案 0 :(得分:2)

错误

您犯的错误是,通过致电append,您始终会添加friends end

但是对于您的链接,您不希望添加到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 - 循环。您需要zip的强大功能,它会将您的两个单独的列表合并为一个2元组的列表,并且与上面的内容完全相同。

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