有人可以解释一下吗?
userData = 10
emptyList = [0] * userData
for i in emptyList:
emptyList[i] = userData
print(emptyList)
userData -= 1
在我看来,这段代码应该做的不同于它。
我正在寻找什么 - 无论userData的值是什么,我希望它在列表emptyList中的顺序值中编入索引。
这个,我想会给我一套[10,9,8]等等......它不会......它只会改变每次迭代中的第一个变量
我做错了什么?
我让它以另一种方式工作,userData = 10 emptyList = [] 对于范围内的i(userData): emptyList.append(ⅰ) userData - = 1 print(emptyList)
但那不是我喜欢的方式..我需要那套0中的0我认为
答案 0 :(得分:2)
userData = 10
emptyList = [0] * userData
print emptyList
将打印
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
并在循环中,
for i in emptyList:
print i,
将打印
0 0 0 0 0 0 0 0 0 0
因此,在循环的所有迭代中,您只是更改列表的第一个元素。你实际应该做的是
userData = 10
emptyList = [0] * userData
for i in range(len(emptyList)):
emptyList[i] = userData
userData -= 1
print emptyList
<强>输出强>
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
有一个名为range
的内置函数,它接受起始值,结束值和增量值,并生成一系列值。使用该功能,您可以在一行中完成此操作
print range(10, 0, -1) #Python 2
print list(range(10, 0, -1)) #Python 3
答案 1 :(得分:0)
该行:
for i in emptyList:
会给你一个循环,依次为i
中的每个值设置emptyList
。
由于这些值的所有都为零,这意味着i
将始终为零,因此它只会更改第一个值。
如果你想要列表[10,9,8,7,6,5,4,3,2,1]
,只需使用更多Pythonic:
emptylist = [x for x in range (10, 0, -1)]
答案 2 :(得分:0)
也许你正在阅读这样的代码
userData = 10
emptyList = [0] * userData
for i in range(len(emptyList)): # note range and len here
emptyList[i] = userData
print(emptyList)
userData -= 1
你可以使用
emptyList = range(userData, 0, -1)
或者它应该做更多的事情?
答案 3 :(得分:0)
for
循环在Python中与其他语言完全不同 - 它更多地用于每个循环(也就是说,对于迭代中的每个元素,都可以使用它)。
如果要创建元素列表,请对Python 2.x使用xrange
或对Python 3.x使用range
:
emptyList = [i for i in xrange(10, 0, -1)]
emptyList = [i for i in range(10, 0, -1)]
答案 4 :(得分:0)
你想要像
这样的东西for i, j in emptyList:
emptyList[j] = userData
userData -= 1
现在你得到值i
(你不关心它)和索引j
,这就是你需要的。
参见Accessing the index in Python 'for' loops - 你不是第一个在Python中挣扎循环的人!