[英]python enumerate function getting index error
我不明白为什么下面的枚举。 它返回一个索引错误。 因为我不需要枚举的索引,所以我使用了下栏。 据我了解 y 不是索引。 对? 我不记得下杠的想法从何而来,但我过去使用过它并取得了不错的效果。 这里没有那么多。
PanelName = ['A1','A2','A3']
PnlCkts = [[1,3,5],[1,4,5],[1,2,4]]
for x in range(len(PanelName)):
for _,y in enumerate(PnlCkts[x]):
sql = ("SELECT Ckt, EObjName, Description, Location,"
+ " EObjType, PDF, Spec, "
+ "DwgName FROM EObjDump WHERE Panel = '"
+ PanelName[x]
+ "' AND Ckt = "
+ str(PnlCkts[x][y])
+ ";"
)
您正在使这变得比需要的更复杂。
如果不需要索引,则不需要使用enumerate(PnlCkts[x])
,直接迭代PnlCtks[x]
即可。
那么你也不需要在下面使用PnlCkts[x][y]
, y
已经是PnlCkts[x]
一个元素。
for x in range(len(PanelName)):
for y in PnlCkts[x]:
sql = ("SELECT Ckt, EObjName, Description, Location,"
+ " EObjType, PDF, Spec, "
+ "DwgName FROM EObjDump WHERE Panel = '"
+ PanelName[x]
+ "' AND Ckt = "
+ str(y)
+ ";"
)
但是,您实际上可以使用enumerate
对PanelName
进行迭代,因为在这里您确实需要索引和值:
for x, panel in enumerate(PanelName):
for y in PnlCkts[x]:
sql = ("SELECT Ckt, EObjName, Description, Location,"
+ " EObjType, PDF, Spec, "
+ "DwgName FROM EObjDump WHERE Panel = '"
+ panel
+ "' AND Ckt = "
+ str(y)
+ ";"
)
这是您可能想要了解的更高级的技术:由于您首先处理PanelName[0]
和PnlCkts[0]
,然后处理PanelName[1]
和PnlCkts[1]
,依此类推,您可以使用zip
作为惯用语并行迭代两个列表的方法:
for panel, ckts in zip(PanelName, PnlCkts):
for y in ckts: # I have no idea what the names mean so I invent one here
sql = ("SELECT Ckt, EObjName, Description, Location,"
+ " EObjType, PDF, Spec, "
+ "DwgName FROM EObjDump WHERE Panel = '"
+ panel
+ "' AND Ckt = "
+ str(y)
+ ";"
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.