python中列表中的数字相乘
我需要一个循环来乘以列表的一部分。我将每个第n个元素(第0个除外)乘以M。该列表称为数字,乘数为M,循环应在第n个数字处开始乘法。 这就是我所拥有的:python中列表中的数字相乘,python,list,Python,List,我需要一个循环来乘以列表的一部分。我将每个第n个元素(第0个除外)乘以M。该列表称为数字,乘数为M,循环应在第n个数字处开始乘法。 这就是我所拥有的: for i in range(0, len(numbers)): numbers[i]= int(numbers[i]) for M in range (N, len(numbers)): if numbers[N] > 0: numbers.append[N] if numbers[N] < 0: to
for i in range(0, len(numbers)):
numbers[i]= int(numbers[i])
for M in range (N, len(numbers)):
if numbers[N] > 0:
numbers.append[N]
if numbers[N] < 0:
total = numbers
print (total)
范围内的i(0,len(数字)):
数字[i]=int(数字[i])
对于范围内的M(N,len(数字)):
如果数字[N]>0:
数字。附加[N]
如果数字[N]<0:
总数=个数
打印(总计)
它总是返回错误的输出,我已经尝试了所有我能想到的方法来修复它,但仍然不起作用。您通常将数字乘以星号(
*
)。因此,我们可以将第i个数字乘以:
numbers[i] *= M
要将除第一个元素外的第N个元素相乘,我们可以构造一个范围:
for i in range(N, len(numbers), N):
numbers[i] *= M
范围
的最后一个参数是步骤
,这意味着我们每次递增i
,直到到达len(数字)
通常用星号(*
)乘以一个数字。因此,我们可以将第i个数字乘以:
numbers[i] *= M
要将除第一个元素外的第N个元素相乘,我们可以构造一个范围:
for i in range(N, len(numbers), N):
numbers[i] *= M
范围
的最后一个参数是步骤
,这意味着我们每次都增加i
,直到达到len(数字)
这是第一个函数。它被称为a,我想是你把M
和N
搞混了。什么是N
这是第一个函数。它被称为a,我想是你把M
和N
搞混了。什么是N
map(lambda (i, el): el*M if i%N==0 else el, enumerate(numbers))
跳过第一个索引:
map(lambda (i, el): el*M if i%N==0 and i>0 else el, enumerate(numbers))
使用映射
:
map(lambda (i, el): el*M if i%N==0 else el, enumerate(numbers))
跳过第一个索引:
map(lambda (i, el): el*M if i%N==0 and i>0 else el, enumerate(numbers))
您的代码中有很多问题和奇怪之处:
- 使用
作为循环变量,从而覆盖存储在M
中的乘数;最好像在第一个循环中一样使用M
i
- 您将添加到列表中,而不是使用
或仅使用numbers[i]=numbers[i]*M
numbers[i]*=M
- 我看不出
和>0
检查与您的问题有什么关系,但您可能应该检查<0
,而不是数字[I]
,因为字母总是一样的数字[N]
- 此外,我不明白您为什么要将整个
列表(而不是仅将编号
分配给编号[I]
并打印它总计
>>> N, M = 3, 10
>>> numbers = list(range(10))
>>> numbers[N::N] = [x*M for x in numbers[N::N]]
>>> numbers
[0, 1, 2, 30, 4, 5, 60, 7, 8, 90]
您的代码中有很多问题和奇怪之处:
- 使用
作为循环变量,从而覆盖存储在M
中的乘数;最好像在第一个循环中一样使用M
i
- 您将添加到列表中,而不是使用
或仅使用numbers[i]=numbers[i]*M
numbers[i]*=M
- 我看不出
和>0
检查与您的问题有什么关系,但您可能应该检查<0
,而不是数字[I]
,因为字母总是一样的数字[N]
- 此外,我不明白您为什么要将整个
列表(而不是仅将编号
分配给编号[I]
并打印它总计
>>> N, M = 3, 10
>>> numbers = list(range(10))
>>> numbers[N::N] = [x*M for x in numbers[N::N]]
>>> numbers
[0, 1, 2, 30, 4, 5, 60, 7, 8, 90]
.append[N]
?您不调用方括号内的函数。我尝试过它不起作用。但它没有任何意义,您调用圆括号内的函数(即数字。append(1)
,并且您无论如何都不需要追加)。.append[N]
?您不使用方括号调用函数。我尝试过它不起作用。但这没有任何意义,您使用圆括号调用函数(即数字。append(1)
,并且您无论如何都不需要追加)。我认为N是3,M是5我认为N是3,M是5不应该在范围内(N,len(数字),N)
berange(N,len(数字)+1,N)
?否则它将丢失最后一个元素?@GarbageCollector:否,因为列表的最后一个索引是len(列表)-1
。这就是为什么您经常在代码中看到范围内的i(len(列表)),因为这并不排除最后一个元素。l=[1,2,3,4,5,6,7,8,9,10]
与列表(范围(2,len(l),2))
给出[2,4,6,8]
@GarbageCollector:这确实是预期的输出,因为最后一个索引是9
,这很奇怪。如果您为范围(2,len(l),2)中的i编写[l[i]
,您将获得[3,5,7,9]
。啊,对了!对不起,我把问题中的N
符号搞糊涂了。范围(N,len(数字),N)不应该是range(N,len(数字)+1,N)
?否则它会错过最后一个元素吗?@GarbageCollector:不,因为列表的最后一个索引是len(列表)-1
。这就是为什么您经常在代码中看到i的(len(thelist))
:因为这并不排除最后一个元素。l=[1,2,3,4,5,6,7,8,9,10]
和列表(range(2,len(l),2))
给出了[2,4,6,8]
@GarbageCollector:这确实是预期的输出,因为最后一个索引是9
,这很奇怪。如果您为范围(2,len(l),2)内的i编写[l[i]
,您将获得[3,5,7,9]
。啊,对了!很抱歉,您对所讨论的n
符号有点困惑。