我浏览过相关问题,但找不到与我的用例完全匹配的问题。
我创建了两个列表(plist
,rlist
):
list1 = [str(x).zfill(2) for x in range(101)]
plist = ['p{0}'.format(element) for element in list1]
rlist = [str(x).zfill(2) for x in range(51)]
rlist = ['r{0}'.format(element) for element in rlist]
每个列表如下所示:
>>> plist
['p00', 'p01', 'p02', 'p03'...'p100']
>>> rlist
['r00', 'r01', 'r02', 'r03'...'r50']
我已经设置了一些嵌套for循环来创建列表元素的排列。我们的想法是获取plist
的每个元素,并将其与rlist
的每个元素相结合。该过程会重复,直到plist
用完为止。
for pitem in range(len(plist)):
vsdata = []
for ritem in range(pitem, len(rlist)):
if pitem == ritem:
print("skipped")
else:
item1 = plist[pitem]
item2 = rlist[ritem]
vsdata.append([str(item1),str(item2)])
print(item1 + " and " + item2)
哪个收益率:
skipped
p00 and r01
p00 and r02
p00 and r03
p00 and r04
p00 and r05
p00 and r06
p00 and r07
p00 and r08
p00 and r09
p00 and r10
...
p01 and r02
p01 and r03
p01 and r04
p01 and r05
p01 and r06
p01 and r07
p01 and r08
p01 and r09
p01 and r10
你会注意到我在嵌套循环之前也声明了空列表vsdata
。此列表应附加多组排列(例如,第一个plist
元素与所有rlist
元素组合)并保存,在嵌套循环再次开始之前,vsdata
将被全部覆盖涉及plist
的第二个元素的组合。
因此,我需要在此之前“导出”vsdata
并使用plist
的相关元素命名。
例如,在第二个循环运行两次后,我应该有两个vsdata
列表;
>>> vsdata_p00
[['p00', 'r02'], ['p00', 'r03'], ['p00', 'r04'], ['p00', 'r05'], ['p00', 'r06'], ['p00', 'r07'], ['p00', 'r08'], ['p00', 'r09'], ['p00', 'r10'] ...
>>> vsdata_p01
[['p01', 'r02'], ['p01', 'r03'], ['p01', 'r04'], ['p01', 'r05'], ['p01', 'r06'], ['p01', 'r07'], ['p01', 'r08'], ['p01', 'r09'], ['p01', 'r10'] ...
我读过关于字典和集合的内容,但无法完全理解它们在这里的实现方式。最终,我希望将所有这些数据导出到csv中。任何帮助表示赞赏。
答案 0 :(得分:2)
使用字典这样的东西可能会起作用:
vsdatas = {}
for pitem in range(len(plist)):
vsdata = []
for ritem in range(pitem, len(rlist)):
if pitem == ritem:
print("skipped")
else:
item1 = plist[pitem]
item2 = rlist[ritem]
vsdata.append([str(item1),str(item2)])
print(item1 + " and " + item2)
vsdatas[plist[pitem]] = vsdata
要获取"p01"
的排列列表,例如,只需访问vdatas["p01"]
。
通常,您不希望动态创建和命名变量。
答案 1 :(得分:0)
如前所述,您可以使用字典。此外,一切都可以在一行中完成(牺牲一点可读性):
vsdata = {'p'+str(p).zfill(2):[['p'+str(p).zfill(2), 'r'+str(r).zfill(2)] for r in range(p+1,51)] for p in range(101)}
print vsdata['p37']
# [['p37', 'r38'], ['p37', 'r39'], ['p37', 'r40'], ['p37', 'r41'], ['p37', 'r42'], ['p37', 'r43'], ['p37', 'r44'], ['p37', 'r45'], ['p37', 'r46'], ['p37', 'r47'], ['p37', 'r48'], ['p37', 'r49'], ['p37', 'r50']]