Python:使用函数修改嵌​​套列表元素

时间:2018-08-23 12:35:22

标签: python-3.x list

我正在尝试使用以下代码从两个单独的熊猫数据框中提取内容:

def get_content(df):
    content=[]
    for index, row in df.iterrows():
        content.append(row.content)           
    return content

contents=[news,blog]
dfs=[news_df,blogs_df]
for df, content in zip(dfs,contents):
    content=get_content(df)
    print(len(content)) #  gives me correct values

print(len(blog),len(news)) # empty lists.

但是重写代码可以给我正确的结果:

def get_content(df):
    for index,row in df.iterrows():
        content.append(row.content)
    return content

news=[]
blog=[]
contents=[news,blog]
dfs=[news_df,blogs_df]
for df, content in zip(dfs,contents):
    content=get_content(df)
    print(len(content)) #  gives me correct values

print(len(blog),len(news)) # gives me correct results

我不明白为什么第二个代码有效,而第一个无效。

1 个答案:

答案 0 :(得分:0)

它们没有改变,因为dfcontent是副本,而不是原始数据(内存中的不同位置)。

为此替换您的:

for index in range(len(contents)):
   contents[index] = get_content(dfs[index])
   print(len(contents[index]))  # gives me correct values

它现在应该起作用而不是循环的原因是因为我正在直接处理列表中的值,而不是它们的副本。