关于python:将每秒的数字乘以列表

Multiplying every second number in a list

我需要能够将列表中的每一个数字乘以2,所以说:

1
List = [1,2,3,4]

我想把这个还给[1,4,3,8],但是我试过的所有方法,比如

1
2
3
4
5
credit_card = [int(x) for x in input().split()]

credit_card[::2] = [x*2 for x in credit_card[::2]]

print(credit_card)

如果在返回[2,2,6,4]之前输入相同的列表

有没有一种方法来完成我想要完成的事情?


就快到了,只需从第二个(1个索引)元素开始:

1
credit_card[1::2] = [x*2 for x in credit_card[1::2]]

也就是说,由于您似乎正在实现lunh校验和,所以您只需要这些数字的总和,而不需要更新原始数据,如本例中所做的那样。


1
2
3
lst = [1,2,3,4]

new_lst = [2*n if i%2 else n for i,n in enumerate(lst)]     # => [1, 4, 3, 8]


1
2
3
4
>>> l = [1,2,3,4]
>>>
>>> list(map(lambda x: x*2 if l.index(x)%2 else x, l))
[1, 4, 3, 8]

1
2
3
for i,_ in enumerate(credit_card):
    if i%2:
        credit_card[i] *= 2

或者如果你想成为一个花哨的人:

1
 credit_card=[credit_card[i]*(2**(i%2)) for i in range(len(credit_card))]

使用Enumerate的另一个解决方案:

1
[i* 2 if p % 2 else i for p, i in enumerate(l)]

其中i是l的p元素。


1
2
3
4
5
6
credit_card = input().split()
for x in len(credit_card)
    if x % 2 != 0
        credit_card[x] = credit_card[x] * 2

print (credit_card)