首页 > 解决方案 > Python - 从 python 中的列表中删除逗号和方括号 - 插入排序

问题描述

我已经获得了插入排序的输出,但是(' '.join(str(arr)))函数不会从列表中删除逗号和方括号。删除括号和逗号的任何建议都会有所帮助

代码:

def insertionSort1(n, arr):
for i in range(1,len(arr)):
    temp=arr[i]
    k=i
    while k>0 and temp<arr[k-1]:
        if(temp<arr[k-1]):
            arr[k]=arr[k-1]
            k-=1
            arr[k]=arr[k+1]
            sortedarr=''.join(str(arr))
            print(sortedarr) 
          
        if(temp>arr[k-1]):
            arr[k]=temp
            sortedarr=(''.join(str(arr)))
            print(sortedarr)      

if __name__ == '__main__':
n = int(input().strip())

arr = list(map(int, input().rstrip().split()))

insertionSort1(n, arr)

输入:

5
2 4 6 8 3

预期输出:

2 4 6 8 8
2 4 6 6 8
2 4 4 6 8
2 3 4 6 8

实际输出:

[2, 4, 6, 8, 8]
[2, 4, 6, 6, 8]
[2, 4, 4, 6, 8]
[2, 3, 4, 6, 8]

标签: pythonstringlistjoininsertion-sort

解决方案


而不是 a join(),您可以像这样直接打印空格分隔的列表项

lst = [1, 2, 4, 8]
print(*lst)
1 2 4 8

在您的代码中删除该join()语句并使用

print(*sortedarr)

您得到逗号和方括号的原因是因为您将整个列表转换为字符串并使用 join而不是将列表中的项目转换为字符串并加入

例如:

arr = list(range(6))

print(''.join(str(arr)))
arr = [str(i) for i in arr]
print(' '.join(arr))
Output

[0, 1, 2, 3, 4, 5]
0 1 2 3 4 5

推荐阅读