为此问题尝试了许多不同的方法后,例如嵌套的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']
答案 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"))