当前位置: 首页 > 面试题库 >

Python For循环仅将最后一个值附加到列表中

章涵蓄
2023-03-14
问题内容

我有一个循环,将一个列表的值设置为另一个列表的值,虽然我可以用当前代码实现此目的,但它只是将最后一组值附加到列表中。在我的设置中可能会导致该问题的原因是什么?

这是我的数据格式:

print(df_full_raw_format) # Data Set being set to worksheet_range values

<class 'pandas.core.frame.DataFrame'>
     b_clicks  b_cpc  date_string
0    b_clicks  b_cpc  date_string
1          72   2.43   2018-01-01
2         232    2.8   2018-01-02
3         255    2.6   2018-01-03
4         249   2.65   2018-01-04
5         202   2.86   2018-01-05

这是我的worksheet_range格式:

[<Cell R1C1 ''>, <Cell R2C1 ''>, <Cell R3C1 ''>,....]

这是我的for循环功能:

update_raw_data_sheet(df_full_raw_format)

def update_raw_data_sheet(data_set):
    for col_val, col_name in zip(gs_columns, columns):
        updated_values = [] # List storing the combined list values
        column_data = data_set[col_name].values.tolist(); # col_name = ['b_clicks', 'b_cpc', 'date_string']
        print("COLUMN DATA")
        print(column_data)
        worksheet_range = worksheet.range(1, col_val, len(column_data), col_val); # [row_start, col_start, row_end, col_end]
        print(worksheet_range)
        for cell, data in zip(worksheet_range, column_data):
            cell.value = data # <Cell R1C1 '2018-01-01'>...
            print(cell)
            updated_values.append(cell)

    print(updated_values)

这是控制台:

(Loop 1)
COLUMN DATA
['date_string', '2018-01-01', '2018-01-02', '2018-01-03', ...] # print(column_data)
[<Cell R1C1 ''>, <Cell R2C1 ''>, <Cell R3C1 ''>,...] # print(worksheet_range)
<Cell R1C1 'date_string'> # print(cell)
<Cell R2C1 '2018-01-01'>
<Cell R3C1 '2018-01-02'>
<Cell R4C1 '2018-01-03'>
... (Loop 2)
COLUMN DATA
['b_clicks', '72', '232', '255', ...]
[<Cell R1C2 ''>, <Cell R2C2 ''>, <Cell R3C2 '', ...]
<Cell R1C2 'b_clicks'>
<Cell R2C2 '72'>
<Cell R3C2 '232'>
... (Loop 3)
COLUMN DATA
['b_cpc', 2.43, 2.8,...]
[<Cell R1C3 'b_cpc'>, <Cell R2C3 '2.43'>, <Cell R3C3 '2.8'>, ...]
<Cell R1C3 'b_cpc'>
<Cell R2C3 2.43>
<Cell R3C3 2.8>
(Post-Loop)
[<Cell R1C3 'b_cpc'>, <Cell R2C3 2.43>, <Cell R3C3 2.8>, ...] # print(updated_values)

它错过了前两个循环的值,但是完美地捕获了数组中的第三个循环。


问题答案:
updated_values = []

应该在def语句之后循环外,否则您将覆盖每次迭代中添加到列表的值。

def update_raw_data_sheet(data_set):
    updated_values = []
    # ...


 类似资料:
  • 问题内容: 问题 我正在以以下方式创建一个空列表作为值的字典。 字典看起来像这样。 当我将一个值附加到一个列表时,此示例将值附加到所有列表。 问题 我的问题分为两部分。首先,为什么会这样?第二,我该怎么办?也就是说,如何将一个值仅附加到一个列表中? 我想象在创建字典时,我使所有列表都指向同一个对象。但是我不明白怎么回事,因为当我输入而不是在字典创建中,然后添加值而不是附加值时,这些值的行为会不同,

  • 问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况相关,通常不适用于Internet的全球受众。要获得使该问题更广泛适用的帮助,请访问帮助中心。 8年前关闭。 PHP有一种非常快速的方法将值附加到数组: 在python中不需要索引号的最简单方法是什么?另外,有没有一种简单的方法可以使用嵌套在字典中的列表来执行此操作,例如此PHP等效项。 问题答案:

  • 我的程序中有一个错误,使我的循环只读取输入字符串的最后一部分。我想让程序计算一个字符串中每个字符的个数。我不想要答案告诉我如何更有效地存储这些值,而不重复所有内容26次。请回答我在这里提出的问题。抱歉,如果这是一个副本!我只是不知道该说明什么,因为没有明显的错误。

  • 问题内容: 我试图弄清楚如何在Python中将多个值附加到列表中。我知道很少有方法可以做到这一点,例如手动输入值或将附加操作放入循环中,或和函数。 但是,我想知道是否还有更整齐的方法?也许某个程序包或功能? 问题答案: 您可以使用sequence方法将列表从任意迭代类型中扩展为多个值,无论是另一个列表还是提供值序列的任何其他事物。 因此,您可以用来附加 单个 值,也可以附加 多个 值。

  • 问题内容: 我非常简单的程序正在遍历数组以导出多个文件。当它处于循环中时,我希望它更新一个文本字段以告诉用户当前正在导出哪个文件。代码如下: 发生的情况是:正常工作,为每个文件抛出一条消息,但是被调用的标签仅在导出了最后一个文件时才更新,因此在整个循环中该标签为空,并且在循环结束时获得了最后一个文件名。 任何想法?我在这里完全是菜鸟,我想知道NSTextField是否需要更新命令,类似于表视图。

  • 我想知道,在这种情况下,我们可以使用增强的for而不是常规的for循环 在这种情况下,我可以使用增强的for吗?