Insert ',<#arg#> '
我期望的结果是
b = [3,2,6]
hid = []
#print(b[0] * b[1])
#print(b[1] * b[2])
#print(b[2] * b[3])
for n in range(len(b)):
print(b[n-1] * b[n])
但是我得到
6, 12
哪里出了错?
答案 0 :(得分:0)
您的列表仅包含三个元素,因此没有b[3]
,您要实现的目标(大小为2
的乘法组合)可以使用两个嵌套循环来完成:
b = [3, 2, 6]
for i in range(len(b) - 1):
for j in range(i + 1, len(b)):
print(b[i] * b[j])
输出:
6
18
12
但是,更Python化的方式是使用itertools.combinations
:
b = [3, 2, 6]
from itertools import combinations
for x, y in combinations(b, 2):
print(x * y)
输出:
6
18
12
答案 1 :(得分:0)
范围(len(b)),其值为(0,1,2) 所以 b [n-1] 是 b [-1] ,它是 6 ,所以(6 * 3) = 18 它给出结果
18, 6, 12
尝试这个:
for n in range(len(b)-1):
print(b[n] * b[n+1])
答案 2 :(得分:0)
for n in range(len(b)):
print(b[n-1] * b[n])
在第一次迭代中,当n = 0时,您具有:
print(b[n-1] * b[n])
什么意思:
print(b[0-1] * b[0])
b [0-1]将为您提供列表中的最后一个元素,因为您拥有
6*3 = 18
您应该这样做:
b = [3,2,6]
hid = []
for n in range(1,len(b)):
print(b[n-1] * b[n])
range(3)将生成0到2之间的数字(3个数字)。你也可以 将开始,停止和步长定义为范围(开始,停止,步长)。 如果未提供,则步长默认为1。
或
b = [3,2,6]
hid = []
for n in range(len(b)-1):
print(b[n] * b[n+1])
输出:
6
12
答案 3 :(得分:0)
在for循环中,迭代从zero
for n in range(len(b)):
print(b[n-1] * b[n])
做“ n-1”表示b [-1],它是列表“ 6”的最后一个元素,而b [n]则是b [0]为18。
因此,您的代码将转换为:
print b[-1]*b[0]
print b[0]*b[1]
print b[1]*b[2]
正确的编码方式是:
#!/usr/bin/python
b = [3,2,6]
i = 0
while i < len(b)-1:
print b[i]*b[i+1]
i+=1
输出:
6
12