Python循环append后生成多个列表的问题及解决咨询
解决循环中生成单个列表而非多次打印列表的问题
嘿,其实你的代码本身并没有生成10个列表,问题出在你把print语句放在了循环内部!每次循环添加一个用户名后就打印一次当前列表,所以看起来像是输出了10个不同的列表,但实际上你的list变量从始至终都是同一个列表。
不过还有个小坑:你用了list作为变量名,这会覆盖Python内置的list类型,容易引发后续的错误,建议换成更有意义的名字比如screen_names。
下面是修改后的完整代码:
import os import tweepy as tw import pandas as pd from collections import Counter # 替换变量名,避免覆盖内置list类型 screen_names = [] consumer_key = "" consumer_secret = "" access_token = "" access_token_secret = "" auth = tw.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tw.API(auth, wait_on_rate_limit=True) search_words = "test" date_since = "2020-06-24" date_to = "2020-06-26" # Collect tweets tweets = tw.Cursor(api.search, q=search_words, lang="en", since=date_since, until=date_to).items(10) # 循环内只做添加操作 for tweet in tweets: screen_names.append(tweet.user.screen_name) # 循环结束后再打印完整列表 print(screen_names)
关键修改点:
- 变量名优化:把
list改成screen_names,遵循Python的命名规范,避免和内置类型冲突。 - 调整print位置:将打印语句移到循环外部,这样所有用户名都添加完成后,只会输出一次包含全部10个元素的列表。
这样修改后,你就能得到想要的单个列表啦~
内容的提问来源于stack exchange,提问作者Brendan berkowitz
相关产品推荐
相关产品推荐

