|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- a=[1,2,3,5436,4,5,6,7,8,0,452,542,54]
- a[0],a[a.index(max(a))]=a[a.index(max(a))],a[0]
- a[-1],a[a.index(min(a))]=a[a.index(min(a))],a[-1]
- print(a)
复制代码
结果如下
- == RESTART: C:\Users\ASUS\AppData\Local\Programs\Python\Python35-32\test.py ==
- [1, 2, 3, 5436, 4, 5, 6, 7, 8, 54, 452, 542, 0]
- >>>
复制代码
为什么min有效,max无效啊........
仔细分析一下:
a[0],a[a.index(max(a))]=a[a.index(max(a))],a[0]
相当于做
a[0] = a[a.index(max(a))]
即
a[0] = a[3]
a的值变成了5436
再做
a[a.index(max(a))] = a[0]
这时index(max(a))变成了0
即
a[0] = a[0]
而右边的a[0]保留原来的a[0]
即1,这样a[0]又变回的1
再说说min这句。a[-1],a[a.index(min(a))]=a[a.index(min(a))],a[-1]
a[-1] = a[a.index(min(a))]
相当于
a[-1] = a[9]
a[-1] = 0
a[a.index(min(a))] = a[-1]
这时min值有两个index 9和-1,但取前面的,所以
a[9] = a[-1]
a[9] = 原来的a[-1] 即54
说起来这也是python的一个坑,根本原因是在处理中有了两个max值和min值,但index取第一个所以造成了错误。
要避免此错误,把max和min的index先赋值给一个变量在交换就可以了。如:
- a=[1,2,3,5436,4,5,6,7,8,0,452,542,54]
- print(a)
- ma = a.index(max(a))
- a[0],a[ma]=a[ma],a[0]
- print(a)
- a=[1,2,3,5436,4,5,6,7,8,0,452,542,54]
- print(a)
- mi = a.index(min(a))
- a[-1],a[mi]=a[mi],a[-1]
- print(a)
复制代码
|
|