在python

时间:2018-07-06 20:58:27

标签: python python-3.x loops

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

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")

请帮助我:)

3 个答案:

答案 0 :(得分:4)

  

如果我可以使用循环来简化代码,那会很好

java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [].

Well now you can!

您只需要稍微修改一下语法即可。

  • for i in range(1990:2015), G[i] = pd.read_csv("map_[i].csv") 用于切片,而不用于范围;您需要:
  • 范围是“半开放式”的,因此range(1990, 2015)将不包括2015年。
  • range(1990, 2015)语句以及Python中的所有复合语句最后都需要一个for
  • 您必须先创建:,然后才能向其中添加内容。
  • Python的格式字符串使用G而不是{}
  • Python的格式字符串必须用[]明确标记。 1
  • 完全无意义的单字母变量名称是个坏主意,即使在完全无意义的玩具示例中也是如此;相反,它们应该是来自Spam sketch的单词。否则,您将被判使用C ++编程。

所以:

f

1。如果您使用的是Python 3.5或更早版本(包括2.7),则不能使用f字符串。相反,您必须编写eggs = {} for i in range(1990, 2016): eggs[i] = pd.read_csv(f"map_{i}.csv")

答案 1 :(得分:0)

g = {}


for i in range(1900,2015):    
        g[i] = pd.read_csv('map_'+ str(i) + '.csv')    

答案 2 :(得分:-1)

是的。当然,您可以按照以下步骤进行操作:

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

或者简而言之:

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