我会尽我所能解释这件事。我有4个列表,每个列表的长度都是可变的。我希望通过list1中的listx、listy和listz中的每个元素获得输入。
从本质上说,创建一个循环通过另一个循环,所以对于a在listx中,位置1在listy中,位置1在listz中,这就是您想要存储的数据。
然后循环返回a中的listx和1在listy中的位置,以便在listz中定位2并获取这些数据。然后再次循环a在listx中,在listy中定位2,在listz中定位1等等。
listx = [a,b,c,d,e,f,g,h,i,j,k,l]
listy = [1,2,3,4]
listz = [1,2]
list1 = [[0*5],[0*5]]
def getListData():
for pos in range(len(listx)):
for pos in range(listy):
for pos in range(listz):
list1 = input("Enter the number for position %s in pos %s in list %s" % (listz[pos], listy[pos], listx[pos])) 这是我尝试过的,但没有成功。我也试过用拉链,但我也没能让它起作用。有什么想法吗?
发布于 2018-03-16 18:20:10
你其实很亲密,但犯了一些简单的错误。首先,您不需要在一开始就设置list1等于任何特殊的东西;空列表就可以了。接下来,在嵌套循环的所有层中使用pos作为变量。如果你指的是不同的东西,那就用不同的名字吧。最后,您使用list1 =而不是list1.append()。使用=将清除list1的值,并将其设置为=标志另一端的任何值;append将添加到列表中,这似乎是您想要的。
另外,我用几种方式使代码更多的是奏鸣曲。现在它只是一个字符串,而不是listx的一个字符列表,因为字符串是可迭代的。我用的是for x in iterable成语,而不是更冗长的for x in range(len(iterable))。这些都不是错误本身,但我认为我产生的代码更好。
listx = 'abcdefghijkl'
listy = [1,2,3,4]
listz = [1,2]
list1 = []
def getListData():
for x in listx:
for y in listy:
for z in listz:
list1.append(input("xvalue: {}, yvalue: {}, zvalue: {}".format(x, y, z)) 需要注意的是:如果您期望输入是整数,则可能需要尝试int(input()) (即将结果转换为int)。默认情况下,它被解释为字符串。
https://stackoverflow.com/questions/49326545
复制相似问题