簡體   English   中英

在迭代過程中為.append()元素創建新的列表名稱

[英]Creating new list names during iteration to .append() elements

我正在嘗試添加元素的迭代過程中創建新的list_names。

# input
df = pd.DataFrame({"R1": [8,2,3], "R2": [-21,-24,4], "R3": [-9,46,6]})

輸入

# desired Output
list1 = df.values[0].tolist()
print(list1)
list2 = df.values[1].tolist()
print(list2)
list3 = df.values[2].tolist()
print(list3)

期望的輸出

# failed attempt
for i in range(3):
    print(f'{"list"}{i}') = df.values[i].tolist()

失敗的嘗試

您可以在整個數據框架上工作而無需迭代。 一次訪問底層數組並將其轉換為列表列表。

import pandas as pd
df = pd.DataFrame({"R1": [8,2,3], "R2": [-21,-24,4], "R3": [-9,46,6]})

#out = df.to_numpy().tolist() for pandas >0.24
out = df.values.tolist()
print(out)
print(out[0])
print(out[1])
print(out[2])

輸出:

[[8, -21, -9], [2, -24, 46], [3, 4, 6]]
[8, -21, -9]
[2, -24, 46]
[3, 4, 6]

通過這種方式,您可以將out變量用作所需的所有單個列表的集合。


如果您想改用字典,也可以如下創建:

out_dict = {f"list{i}":lst for i, lst in enumerate(out, start=1)}
#Output:
{'list1': [8, -21, -9], 'list2': [2, -24, 46], 'list3': [3, 4, 6]}

print(out_dict['list1'])
print(out_dict['list2'])
print(out_dict['list3'])

在列表方法和字典方法之間,您應該能夠涵蓋您真正需要的所有用例。 嘗試動態制作可變數量的變量通常是一個壞主意。 相關閱讀

for i in range(3):
    print('list{} = {}'.format(i, df.loc[i].values.tolist()))

輸出量

list0 = [8, -21, -9]
list1 = [2, -24, 46]
list2 = [3, 4, 6]

首先,要回答您的問題,要動態創建變量,可以使用exec()

for i in range(3):
    exec("List%d=%s" % (i,df.values[i].tolist()))
print(List1)

其次,以上是一個壞習慣 當值由外部數據(用戶輸入,文件或其他任何內容)提供時,這會帶來安全風險。 因此,最好避免使用它

您可以隨時使用的字典中,您可以使用key value對來達到同樣的目的(見其他答案)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM