亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何更改列表中特定位置的數字

如何更改列表中特定位置的數字

RISEBY 2023-06-20 16:22:13
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)我已經嘗試了很多方法以“專業方式”編寫這段代碼,但這是我能讓它工作的唯一方法
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

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)


查看完整回答
反對 回復 2023-06-20
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

如果您只是想更改某些特定位置的值,那么您做事的方式并沒有什么特別的錯誤。當然,這里有一個你可以利用的模式:


for i in range(1, len(num), 2):

    num[i] *= 2

但是,如果位置是任意的,“專業”的方法不是在函數中使用幻數,而是像這樣:


POSITIONS = [1, 4, 5, 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))) 


查看完整回答
反對 回復 2023-06-20
  • 2 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號