如何在lis中输入负数

2024-09-28 03:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些帮助,因为每当我输入一个负数时,列表会将它解释为一个单独的元素,所以一旦它开始排序,它就会把所有的负数符号放在开头。代码的最终目标是在不使用默认排序函数的情况下对两个合并列表进行排序。另外,如果有更好的方法去除列表中的空格,我会很感激的,因为目前我必须将列表转换为字符串,并替换/删除空格所导致的额外元素。在

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)

没有负数的列表的输出是:

^{pr2}$

但是如果是负片,它会变成:

- - - - 1 2 3 3 4 4 5

当我输入任何负片时,第一个只检查列表合并情况的打印函数如下所示(忽略空格,因为我稍后会尝试删除它们):

['1', ' ', '-', '2', ' ', '3', '3', ' ', '-', '4', ' ', '-', '4', ' ', '-', '5']

Tags: 元素列表input排序情况sortlist空格
1条回答
网友
1楼 · 发布于 2024-09-28 03:22:30

list()不将字符串解析为整数列表,而是将iterable项转换为项列表。 要从控制台读取列表,请尝试以下操作:

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, ...)返回一个iterable,它将int()应用于用户输入的每个“单词”。在

list()的最后一次调用将把iterable变成一个列表。在

这也应该处理负数。在

另外,我看到您希望打印结果列表,而不需要额外的字符。我建议:

^{pr2}$

相关问题 更多 >

    热门问题