2024-05-16 09:36:32 发布
网友
所以我正在编写一个函数,它将把list中奇数索引处的每个数乘以2。我不知道怎么接近。在
list
2
这是我的密码。在
def produkt(pnr): for i in pnr: if i % 2 != 0: i = i * 2 return pnr
例如,如果我输入produkt([1,2,3]),我得到[1,2,3],但我希望它是[2,2,6]。在
produkt([1,2,3])
[1,2,3]
[2,2,6]
使用列表理解:
奇数乘以2:
[x*2 if x%2 else x for x in pnr]
澄清问题措辞后: 将奇数索引处的数字乘以2:
注意,在您的例子中修改i并不会改变输入列表中的值(整数是不可变的)。你还把值和它们的位置混合在一起。在
i
另外,在python中,由于索引从0开始,所以得到的方法是错误的。在
0
在这些情况下,使用三元表达式进行简单的列表理解就可以了,使用enumerate来获得索引(使其从1开始匹配您的情况,您可以随意调整):
enumerate
1
[p*2 if i%2 else p for i,p in enumerate(pnr,1)]
(注意if i%2比if i%2 != 0短)
if i%2
if i%2 != 0
考虑使用列表理解:
def produkt(pnr): return [k * 2 if k % 2 else k for k in pnr]
做i = i * 2你只需重写一个局部变量。在
i = i * 2
更新(问题已更改):
使用列表理解:
奇数乘以2:
澄清问题措辞后: 将奇数索引处的数字乘以2:
^{pr2}$注意,在您的例子中修改
i
并不会改变输入列表中的值(整数是不可变的)。你还把值和它们的位置混合在一起。在另外,在python中,由于索引从
0
开始,所以得到的方法是错误的。在在这些情况下,使用三元表达式进行简单的列表理解就可以了,使用
enumerate
来获得索引(使其从1
开始匹配您的情况,您可以随意调整):(注意
if i%2
比if i%2 != 0
短)考虑使用列表理解:
做
i = i * 2
你只需重写一个局部变量。在更新(问题已更改):
^{pr2}$相关问题 更多 >
编程相关推荐