我这个列表循环从小排序,逻辑错在那里了?
本帖最后由 jcpython2 于 2022-10-12 10:11 编辑思路是不断缩减min的范围,把每次循环到的最小值替换到第一个值
a=
for i in range(len(a)):
minV = min(a) #最小值
minI = a[::].index(minV) #最小值位置
nowV = a #现值
nowI = a.index(nowV) #现值位置
a,a = a,a #现值最小值互换
print(a)
逻辑错在哪一步? 这一句
minI = a[::].index(minV) #最小值位置
应该是这样?
minI = a.index(minV) #最小值位置 jackz007 发表于 2022-10-12 10:17
这一句
应该是这样?
也不对呢 本帖最后由 jackz007 于 2022-10-12 10:52 编辑
jcpython2 发表于 2022-10-12 10:28
也不对呢
再试试这个
a =
for i in range(len(a) - 1):
minV = min(a)
minI = a . index(minV)
a , a = a , a
print(a)
运行实况:
D:\\Python>python x.py
D:\\Python>
通过
minI = a . index(minV)
获得的索引 minI 是针对 a 的,也就是说,是从索引 i 开始起算的,所以,真正的索引是 minI + i jackz007 发表于 2022-10-12 10:43
再试试这个
通过
对
要补回缩小范围内的值才能得出最小值真正在列表的位置 a=
for i in range(len(a)):
mina = min(a)
indexa = a.index(mina,i)
a.pop(indexa)
a.insert(i,mina)
print(a)
看一下,这种思路,获取最小值,然后删除,再添加到前面 本帖最后由 jcpython2 于 2022-10-12 20:32 编辑
jackz007 发表于 2022-10-12 10:43
再试试这个
运行实况:
老哥你的提点我又改进了下,并且做了笔记,不要怕我白吃你们的回复
a =
for i in range(len(a)):
mv = min(a)
mi = a.index(mv,i)
a,a = a,a
print(a)
笔记
a =
mi = a.index(3)
mi2 = a.index(3,5)
print(mi)
print(mi2)
mi输出3在指定范围内的位置
mi2输出3在指定范围内搜索,返回相对整体列表的位置
输出
5
10 简单滴滴 发表于 2022-10-12 11:45
看一下,这种思路,获取最小值,然后删除,再添加到前面
是的,有内置函数这事我知道,主要是想用最基础的操作把效果实现出来,因为我基础比较差,多磨磨 jcpython2 发表于 2022-10-12 18:51
老哥你的提点我又改进了下,并且做了笔记,不要怕我白吃你们的回复
ok,也提醒到我了。
页:
[1]