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

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

Python 3.6 vs Python 3.8.2 if 語句與'is' - 顯示不同的結果

Python 3.6 vs Python 3.8.2 if 語句與'is' - 顯示不同的結果

嗶嗶one 2022-10-06 16:11:20
我有這個問題,我需要將每個 0 或 0.0 放在列表的后面,同時保存其他元素的順序,例如:move_zero([1,3,4,[],False,None,0,0,3,0.0,4])將輸出:[1,3,4,[],False,None,3,4,0,0,0]請注意,該函數特別是從 0.0 變為 0,這很好,這是它應該做的現在,這是我對這個問題的看法:def move_zeros(array):   new_arr = []   count_zero = 0   for x in array:       if (x is 0) or (x is 0.0):           count_zero += 1       else:           new_arr.append(x)   return new_arr + count_zero * [0]但是由于某種我不能稱之為原因的原因,它沒有輸入我輸入的第一個 if 語句:[9,0.0,0,9,1,2,0,1,0,1,0.0,3,0,1,9,0,0,0,0,9]輸出是:[9, 0.0, 9, 1, 2, 1, 1, 0.0, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0]它在 Python 3.6 上輸出錯誤的列表而在 python 3.8.2 上它工作正常..(但是我需要為此使用 3.6)我錯在哪里?if 語句似乎沒問題!
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

但是由于某種我不能稱之為原因的原因,它沒有輸入我輸入的第一個 if 語句:


您需要==用于比較值。is用于在 Python 中比較身份。有關Python中的vs的信息,請參閱此內容。==is


嘗試這個:


def move_zeros(a):

    r = [i for i in a if not isinstance(i, (float, int)) or str(i) not in ('0.0', '0')]

    r += [0] * (len(a) - len(r))

    return r


print(move_zeros([9,0.0,0,9,1,2,0,1,0,1,0.0,3,0,1,9,0,0,0,0,9]))

輸出:


[9, 9, 1, 2, 1, 1, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


查看完整回答
反對 回復 2022-10-06
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

嘗試這個


def move_zeros(a):

    res = []

    x = 0

    for num in a:

        if str(num) == '0.0' or str(num) == '0':

            x += 1

        else:

            res.append(num)


    return res + [0] * x


print(move_zeros([9,0.0,0,9,1,2,0,1,0,1,0.0,3,0,1,9,0,0,0,0,9]))

輸出:


[9, 9, 1, 2, 1, 1, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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