整数乘以错误的数字
Integers being multiplied by the wrong number
我试图将一个数组的一些值乘以 3,但是当我用它的新值打印数组时,我看到这些数字实际上已经乘以 2187 而不是 3。很奇怪。
for digit in digits:
digits[0] = digits[0]*3
digits[2] = digits[2]*3
digits[4] = digits[4]*3
digits[6] = digits[6]*3
数组中的原始数字是[1,2,3,4,5,6,7]
相乘后应该是:
[3,2,9,4,15,6,21]
相反,我们得到 [2187,2,6561,4,10935,6,15309]
。
您每次都在乘以它,因此数字很大!循环每次将值乘以 3
。
因此1
会变成2187
也就是1*3*3*3*3*3*3*3
要么一次全部完成(去掉for循环)
>>> digits = [1,2,3,4,5,6,7]
>>> digits[0] = digits[0]*3
>>> digits[2] = digits[2]*3
>>> digits[4] = digits[4]*3
>>> digits[6] = digits[6]*3
>>> digits
[3, 2, 9, 4, 15, 6, 21]
或者在循环中使用条件
>>> digits = [1,2,3,4,5,6,7]
>>> for i, v in enumerate(digits):
... if(i % 2 == 0):
... digits[i] = v * 3
...
>>> digits
[3, 2, 9, 4, 15, 6, 21]
这里我使用了 enumerate
,它将 return 一个索引和值的元组。
或者您甚至可以使用步长为 2
的范围函数
>>> digits = [1,2,3,4,5,6,7]
>>> for i in range(0, len(digits), 2):
... digits[i] = digits[i]*3
...
>>> digits
[3, 2, 9, 4, 15, 6, 21]
只是为了演示 Python 切片和列表理解:
>>> L = [1,2,3,4,5,6,7]
>>> L[::2] = [x*3 for x in L[::2]]
>>> L
[3, 2, 9, 4, 15, 6, 21]
Select 用 L[::2] =
替换每隔一个字符,然后使用列表理解将列表中的每个条目增加三倍。
我试图将一个数组的一些值乘以 3,但是当我用它的新值打印数组时,我看到这些数字实际上已经乘以 2187 而不是 3。很奇怪。
for digit in digits:
digits[0] = digits[0]*3
digits[2] = digits[2]*3
digits[4] = digits[4]*3
digits[6] = digits[6]*3
数组中的原始数字是[1,2,3,4,5,6,7]
相乘后应该是:
[3,2,9,4,15,6,21]
相反,我们得到 [2187,2,6561,4,10935,6,15309]
。
您每次都在乘以它,因此数字很大!循环每次将值乘以 3
。
因此1
会变成2187
也就是1*3*3*3*3*3*3*3
要么一次全部完成(去掉for循环)
>>> digits = [1,2,3,4,5,6,7] >>> digits[0] = digits[0]*3 >>> digits[2] = digits[2]*3 >>> digits[4] = digits[4]*3 >>> digits[6] = digits[6]*3 >>> digits [3, 2, 9, 4, 15, 6, 21]
或者在循环中使用条件
>>> digits = [1,2,3,4,5,6,7] >>> for i, v in enumerate(digits): ... if(i % 2 == 0): ... digits[i] = v * 3 ... >>> digits [3, 2, 9, 4, 15, 6, 21]
这里我使用了
enumerate
,它将 return 一个索引和值的元组。或者您甚至可以使用步长为 2
的范围函数>>> digits = [1,2,3,4,5,6,7] >>> for i in range(0, len(digits), 2): ... digits[i] = digits[i]*3 ... >>> digits [3, 2, 9, 4, 15, 6, 21]
只是为了演示 Python 切片和列表理解:
>>> L = [1,2,3,4,5,6,7]
>>> L[::2] = [x*3 for x in L[::2]]
>>> L
[3, 2, 9, 4, 15, 6, 21]
Select 用 L[::2] =
替换每隔一个字符,然后使用列表理解将列表中的每个条目增加三倍。