首页 > 解决方案 > 在python中通过循环遍历名称

问题描述

我需要多年重复编码,例如,

G1990 = pd.read_csv("map_1990.csv")
G1991 = pd.read_csv("map_1991.csv")
". . ."
G2015 = pd.read_csv("map_2015.csv")

其他例子是,

path2001=dict(nx.all_pairs_shortest_path_length(G2001))
path2002=dict(nx.all_pairs_shortest_path_length(G2002))
path2003=dict(nx.all_pairs_shortest_path_length(G2003))
". . . "
path2015=dict(nx.all_pairs_shortest_path_length(G2015))

df2001.to_csv("path2001.csv")
df2002.to_csv("path2002.csv")        
df2003.to_csv("path2003.csv")
". . . "
df2015.to_csv("path2015.csv")

如果我可以使用循环来简化我的代码,那就太好了,这样

for i in range(1990:2015),
    G[i] = pd.read_csv("map_[i].csv")

或者

for i in range(2001:2015),
    path[i]=dict(nx.all_pairs_shortest_path_length(G[i]))

for i in range(1990:2015),
    df[i].to_csv("path[i].csv")

请帮帮我 :)

标签: pythonpython-3.xloops

解决方案


如果我可以使用循环来简化我的代码,那就太好了,这样

for i in range(1990:2015),
    G[i] = pd.read_csv("map_[i].csv")

那么现在你可以了!

你只需要稍微修正一下语法。

  • :用于切片,而不是范围;你需要range(1990, 2015)
  • 范围是“半开放的”,因此range(1990, 2015)不包括 2015 年。
  • for语句,以及 Python 中的所有复合语句,:最后都需要 a。
  • 您必须先创建G,然后才能向其中添加内容。
  • Python 的格式字符串使用{}而不是[].
  • Python 的格式字符串必须用f. 1
  • 完全没有意义的单字母变量名是个坏主意,即使在完全没有意义的玩具示例中也是如此;它们应该是从垃圾邮件草图中提取的单词。否则你将被判使用 C++ 编程。

所以:

eggs = {}
for i in range(1990, 2016):
    eggs[i] = pd.read_csv(f"map_{i}.csv")

1. 如果你使用的是 Python 3.5 或更早版本,包括 2.7,你不能使用 f-strings;相反,您必须编写"map_{}.csv".format(i).


推荐阅读