我需要一些幫助,因為每當我輸入一個負數時,列表會將其解釋為一個單獨的元素,因此一旦開始排序,它就會將所有負號放在開頭。代碼的最終目標是在不使用默認排序函數的情況下對 2 個合并列表進行排序。此外,如果有更好的方法來擺脫列表中的空格,我將不勝感激,因為目前我必須將列表轉換為字符串并替換/去除空格導致的額外元素。list1 = list(input())list2 = list(input())mergelist = list1 + list2print(mergelist)def bubble_sort(X): nums = list(X) for i in range(len(X)): for j in range(i+1, len(X)): if X[j] < X[i]: X[j], X[i] = X[i], X[j] return Xmergelist = bubble_sort(mergelist)strmergelist = str(mergelist)strmergelist = strmergelist.replace("'", '')strmergelist = strmergelist.replace(",", '')strmergelist = strmergelist.strip('[]')strmergelist = strmergelist.strip()print(strmergelist)沒有否定的列表的輸出是:1 2 3 4 4 5 5但是,如果是負數,則變為:- - - - 1 2 3 3 4 4 5當我輸入任何負數時,我第一個檢查列表合并的打印函數看起來像這樣(忽略空格,因為我稍后嘗試刪除它們):['1', ' ', '-', '2', ' ', '3', '3', ' ', '-', '4', ' ', '-', '4', ' ', '-', '5']
1 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
list()不會將字符串解析為整數列表,而是將可迭代的項目轉換為項目列表。要從控制臺讀取列表,請嘗試以下操作:
def read_list():
"""
read a list of integers from stdin
"""
return list(map(int, input().split()))
list1 = read_list()
list2 = read_list()
input.split() 讀取一行用戶輸入并將其用空格分隔 - 基本上是單詞。
int() 可以將字符串轉換為整數。
map(int, ...)返回一個適用int()于用戶輸入的每個“單詞”的可迭代對象。
最后一次調用list()將把可迭代對象變成一個列表。
這也應該處理負數。
此外,我看到您想要打印沒有額外字符的結果列表。我推薦這個:
print(' '.join(mergelist))
添加回答
舉報
0/150
提交
取消