纯小白,刚从C转过来,感觉python中的下标很不方便控制啊

flying_music 2021-03-09 04:00:10

#!/bin/python3
# -*- coding: UTF-8 -*-

import sys
import random

def InsertSort(array):
for i in range(1, len(array)):
tmp = array[i]
j = i - 1
while j >= 0: #这块儿的代码也太丑陋了,没有好的写法吗
if array[j] > tmp:
array[j+1] = array[j]
else:
break
j -= 1
array[j] = tmp

if __name__ == "__main__":
array = []
for i in range(10):
array.append(random.randint(0,9))
print(array)
InsertSort(array)
print(array)

如代码所示,想遍历第i-1到第0个下标位置的元素(for(j=i-1; j>=0; j--)),用range还得转成"倒数第几个",也很费劲,大神们都是怎么搞的?
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flying_music 2021-03-09
  • 打赏
  • 举报
回复
引用 2 楼 liups 的回复:
你这个就不应该用for循环!用while就可以了!
也有道理,改成for循环也不怎么整齐,就这样吧
llf_cloud 2021-03-09
  • 打赏
  • 举报
回复
用sort或sorted排序它不香吗?
好像只能这样写,没有好办法。
flying_music 2021-03-09
  • 打赏
  • 举报
回复
引用 1 楼 陈年椰子 的回复:

a1 = [1,2,3,4,5,6]
for i in range(4,-1,-1):
    print(a1[i])
是这个意思?
奥,对的,我理解错了,-1是倒序,并不是倒数,下标还是正数的下标
liups 2021-03-09
  • 打赏
  • 举报
回复
你这个就不应该用for循环!用while就可以了!
陈年椰子 2021-03-09
  • 打赏
  • 举报
回复

a1 = [1,2,3,4,5,6]
for i in range(4,-1,-1):
    print(a1[i])
是这个意思?

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧