如何解决如何在列表中的特定位置更改数字
def id(id):
num = [int(x) for x in str(id)]
num[1] = num[1]*2
num[3] = num[3]*2
num[5] = num[5]*2
num[7] = num[7]*2
print(num)
x = id(123456789)
我尝试了很多方法以“专业方式”编写此代码,但这是我使之工作的唯一方式
解决方法
def multiply_even_indexes(number):
# Going for each digit,and multiply by 2 if it's index is even
# int(d)*2**(i % 2) means that we:
# 1. Convert x to number
# 2. Multiply x with 2 in the power of either 0 or 1 (depends if `i` is even)
# That means:
# For i = 1: We get i%2==1 (reminder of 1) so it's multiply by 2^1=2 (so we multiply by two the second element)
# For i = 2: We get i%2==0 (mo reminder) so it's multiply by 2^0=1 (so we don't change the third element)
digits_result = [int(d)*2**(i % 2) for i,d in enumerate(str(number))]
return digits_result
x = multiply_even_indexes(123456789)
# [1,4,3,8,5,12,7,16,9]
print(x)
,
如果您只想更改某些特定位置的值,则做事方式没有什么特别错误。当然,这里有一个可以利用的模式:
for i in range(1,len(num),2):
num[i] *= 2
但是,如果位置是任意的,则“专业”方式不是在函数中使用幻数,而是诸如此类:
POSITIONS = [1,7]
def make_id(input_id): # don't shadow built-in names
num = map(int,str(input_id))
for i in POSITIONS:
num[i] *= 2
# return some value,don't just print it
return int(''.join(map(str,num)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。