切片操作与input输入

  • 切片操作:list[start:end:step]
  • 从键盘输入:input("请输入:")输入的为字符串
  • 用于移除字符串头尾指定的字符:strip('[')
  • 通过指定分隔符对字符串进行切片:split(',')
  • 列表表达式:[int(a_str[i]) for i in range(len(a_str))]

    编写程序,用户输人一个列表和两个整数作为下标,然后使用切片获取并输出列表中介于两个下标之间的元素组成的子列表。例如,用户输人[1,2,3,4,5,6]和2,5.程序输出[3,4,5,6]。
    代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    a_str=input("请输入一个列表,如[1,2,3]:")
    a_str=a_str.strip('[') #用于移除字符串头尾指定的字符
    a_str=a_str.strip(']')
    a_str=a_str.split(',') #通过指定分隔符对字符串进行切片
    a_list=[int(a_str[i]) for i in range(len(a_str))] #遍历a_str,将a_str每个元素强制转化为int
    print("您输入的列表为:",a_list)
    star=int(input("请输入开始下标:"))
    end=int(input("请输入结束下标:"))
    print(a_list[star:end+1:])
    运行结果:

  • 随机生成[0,10]的整数:random.randint(0,10)
  • 对数组进行排序,reverse=False表示升序:list.sort()会改变原来的列表,因此print(star_list.sort(reverse=False))会返回None --> print(star_list)

    编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
    代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import random
    a_list = [random.randint(0,10) for i in range(0,20,1)]
    print(a_list)
    star_list=a_list[0:10:]
    end_list=a_list[10:20:]
    star_list.sort(reverse=False) #sort()会改变原来的列表,因此print(star_list.sort(reverse=False)),会返回None --> print(star_list)
    end_list.sort(reverse=True)
    print(star_list)
    print(end_list)
    运行结果:

  • 使用列表推导式生成包含10个数字5的列表,语句可以写为a = [5 for x in range(10)]
  • 不可以使用del命令来删除元组中的部分元素。
  • 列表对象的pop()方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。

    为什么应尽量从列表的尾部进行元素的增加与删除操作?

①在插入和删除非尾部元素涉及列表中大量元素的移动,会严重影响效率②在非尾部位置插入和删除元素时会改变该位置后面的元素在列表中的索引,可能会导致意外的错误结果

  • Python3.x 的range()函数返回一个可迭代对象