我需要一些帮助,因为每当我输入一个负数时,列表便会将其解释为一个单独的元素,因此一旦进行排序,便会将所有负号放在开头。该代码的最终目标是不使用默认排序功能对2个合并列表进行排序。另外,如果有一种更好的方法来消除列表中的空格,我将不胜感激,因为目前我必须将列表转换为字符串,并替换/剥离空格引起的多余元素。
list1 = list(input())
list2 = list(input())
mergelist = list1 + list2
print(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 X
mergelist = 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']
答案 0 :(得分:0)
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))