Python 为什么打印不打印我的数组

Python 为什么打印不打印我的数组,python,arrays,sorting,for-loop,Python,Arrays,Sorting,For Loop,这是我的原始数组:a=[0,4,7,8,1,3,5,2,6] 这就是它打印的内容:[0,4,7,0,0,0,5,0,0] for i in a: pos = i min = a[i] for j in a: if a[j] < min: min = a[j] pos = j a[pos] = a[i] a[i] = min print(a) a中的i的: pos=i m

这是我的原始数组:
a=[0,4,7,8,1,3,5,2,6]

这就是它打印的内容:
[0,4,7,0,0,0,5,0,0]

for i in a:
    pos = i
    min = a[i]
    for j in a:
        if a[j] < min:
            min = a[j]
            pos = j
        a[pos] = a[i]
        a[i] = min
print(a)
a中的i的
:
pos=i
min=a[i]
对于a中的j:
如果a[j]
嗯,你想实现什么排序算法?如果您试图做的是气泡排序,那么应该是这样的:

a = [0, 4, 7, 8, 1, 3, 5, 2, 6]

n=len(a)

for i in range(n):
    for j in range(n-1):
        if a[j+1] < a[j]:
            min = a[j+1]
            a[j+1] = a[j]
            a[j] = min

print(a)
a=[0,4,7,8,1,3,5,2,6]
n=len(a)
对于范围(n)中的i:
对于范围(n-1)内的j:
如果a[j+1]
您没有解释您到底想要什么,但是如果您想对数组进行排序,例如从45312到12345

print(sorted(mylist))

作为"李俊伟",你的算法似乎不正确。但可能还有其他一些事情需要指出

这两条线向远处看

for i in a:
for j in a:
i和j采用的是
a
元素的值,而不是索引值。我想你是说

for i in range(len(a)):
得到零的原因是因为min被初始化为0。请注意,它为零不是因为索引,而是因为0是数组中的第一个值。一旦min为零,这是此行数组中的最小值

if a[j] < min:
a[i] = min

将所有设置为零。但并非每个元素都是零,因为[i]不是顺序的。因为i是元素值而不是索引,所以它会跳来跳去。

我要进行选择排序,但我缺少n=leng部分。您将列表值与列表索引混淆,这是因为所有值恰好都是列表的有效索引。如果您确定这不是真的(例如,通过向列表中的每个值添加10),那么任何此类混淆都将在问题发生时导致异常,而不是让无意义的结果持续到代码结束。
a[i] = min