You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套列表循环问题:所有子列表被最后URL评论覆盖

解决嵌套列表被最后一个URL评论覆盖的问题

嘿,我看你遇到了个挺典型的Python列表引用问题——本来想让每个子列表对应不同URL的前10条评论,结果所有子列表都被最后一个URL的评论给覆盖了对吧?我仔细看了你写的两种代码,问题根源出在列表初始化的方式上。

问题原因

你用的这两种初始化方式:

z = [[""] * 10] * len(x)
# 或者
z = [[]] * len(x)

都会创建引用同一个底层列表对象的多个元素。简单说,z里的每个子列表其实都是同一个列表的“替身”,你修改任何一个z[i]的时候,都是在修改那个唯一的底层列表,最后所有子列表自然都会变成最后一次赋值的内容。

解决方案:创建独立的子列表

我们需要用列表推导式来初始化,这样每个子列表都是完全独立的对象,不会互相干扰。

对应第一种写法的修正代码

把列表初始化的那行改成列表推导式:

import praw
reddit = praw.Reddit(client_id='L685-1uBBrLbKQ', client_secret='_Fk5nW1L2h3VRR6BVnkusMh43QQ_gg', user_agent='Shivam Anand')
hot_posts = reddit.subreddit('AskReddit').top(time_filter="day", limit=5)
x=[]
y=[]
for post in hot_posts:
    x.append(post.title)
    y.append(post.url)
print(x)
print(y)
# 用列表推导式创建10个元素的独立子列表
z = [[""] * 10 for _ in range(len(x))]
for i,j in enumerate(y):
    print(i)
    print(j)
    submission = reddit.submission(url=j)
    submission.comments.replace_more(limit=0)
    for commentcount in range(0, 10):
        print(commentcount)
        z[i][commentcount] = submission.comments[commentcount].body
    del submission

对应第二种写法的修正代码

同样把初始化改成列表推导式,生成独立的空列表:

import praw
reddit = praw.Reddit(client_id='L685-1uBBrLbKQ', client_secret='_Fk5nW1L2h3VRR6BVnkusMh43QQ_gg', user_agent='Shivam Anand')
hot_posts = reddit.subreddit('AskReddit').top(time_filter="day", limit=5)
x=[]
y=[]
for post in hot_posts:
    x.append(post.title)
    y.append(post.url)
print(x)
print(y)
# 用列表推导式创建独立的空列表
z = [[] for _ in range(len(x))]
for i,j in enumerate(y):
    print(i)
    print(j)
    try:
        del submission
    except:
        print("na")
    submission = reddit.submission(url=j)
    submission.comments.replace_more(limit=0)
    for commentcount in range(0, 10):
        print(commentcount)
        print(j)
        z[i].append(submission.comments[commentcount].body)

这样修改后,每个子列表都会对应各自URL的评论,不会再被最后一个覆盖啦~

内容的提问来源于stack exchange,提问作者Shivam Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:34:47