###2. 列表简介

  • 列表由一些列按特定顺序排列的元素组成,在Python中,用方括号( [ ] )表示列表,并用逗号分隔其中的元素。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)

输出:
['trek', 'cannondale', 'redline', 'specialized']

如果让Python将列表打印出来,Python将打印列表的内部表示,包括方括号。

  • 访问列表元素
  • 利用索引访问。列表第一个元素的索引为0,而不是1。
  • 可以对任意列表调用上一章中讲到的字符串方法。
bicycles = [' trek ','cannondale','redline','specialized']
print(bicycles[0].title())
print(bicycles[0].upper())
print(bicycles[0].lower())
print(bicycles[0].strip())
print(bicycles[0].lstrip())
print(bicycles[0].rstrip())
print(f"my bicycle is a {bicycles[0]}")

输出:
 Trek 
 TREK 
 trek 
trek
trek 
 trek
my bicycle is a  trek
  • Python为访问最后一个列表元素提供了一种特殊语法,即将索引指定为-1,这样使得我们可以在不知道列表长度的情况下访问最后一个元素。这种约定也适用于其他复数索引,例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,依此类推。
    在访问列表的最后一个元素时,尽量使用索引-1,这样可以避免索引错误,在使用索引-1时,只有列表为空才会出现错误。
bicycles = [' trek ','cannondale','redline','specialized']
print(bicycles[-1])
print(bicycles[3])
print(bicycles[-2])
print(bicycles[2])

输出:
specialized
specialized
redline
redline
  • 修改列表元素
    指定列表名和要修改元素的索引,再指定该元素的新值。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[0])

bicycles[0] = "test"
print(bicycles[0])

输出:
trek
test
  • 添加列表元素
  • 在末尾添加元素
    采用append方法:list.append(object)
bicycles = ['trek','cannondale','redline','specialized']
print((bicycles))

bicycles.append("test")
print(bicycles)

输出:
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'cannondale', 'redline', 'specialized', 'test']
  • 插入元素
    采用insert方法:list.insert(index, object)
bicycles = ['trek','cannondale','redline','specialized']
print((bicycles))

bicycles.insert(0, 'test')
print(bicycles)

输出:
['trek', 'cannondale', 'redline', 'specialized']
['test', 'trek', 'cannondale', 'redline', 'specialized']
  • 删除列表元素
  • 使用del语句删除元素:del list[index]
    使用del可删除任意位置处的列表元素,条件是知道其索引。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)

del bicycles[0]
print(bicycles)

输出:
['trek', 'cannondale', 'redline', 'specialized']
['cannondale', 'redline', 'specialized']
  • 使用方法pop()删除元素:
    list.pop(), 删除末尾值,有返回值,返回被删除元素,类比栈的弹出栈顶
    list.pop(index),删除任意位置元素,指定索引,有返回值,返回被删除元素
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)

poped_bicycle_noindex = bicycles.pop()  #直接删除最后一个元素
print(bicycles)
print(poped_bicycle_noindex)

poped_bicycle = bicycles.pop(0)  #指定索引,删除第一个元素
print(bicycles)
print(poped_bicycle)
输出:
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'cannondale', 'redline']
specialized
['cannondale', 'redline']
trek
  • del方法和pop方法都可以删除列表任意位置的元素,二者最大区别在于,pop是有返回值的,del没有返回值,在选用时,也通常依此判断。
  • 根据值删除元素
    使用remove函数:list.remove(object),没有返回值,一次只能删除一个值,也就是说,当有多个重复的值时,只会删除第一个,并不会删除所有重复值,如果需要全部删除,需要使用循环来确保每个值都删除。
icycles = ['trek','cannondale','redline','specialized']
print(bicycles)

bicycles.remove('trek')   #尝试删除
print(bicycles)

bicycles.append('redline')  #插入使得出现重复元素
print(bicycles)  
bicycles.remove('redline')  #验证无法删除多个相同元素
print(bicycles)

输出:
['trek', 'cannondale', 'redline', 'specialized']
['cannondale', 'redline', 'specialized']
['cannondale', 'redline', 'specialized', 'redline']
['cannondale', 'specialized', 'redline']
  • 使用sort()对列表永久排序
    list.sort()可以永久的修改列表元素的排列顺序,默认是按照升序(字母按字典序),加入可选参数 reverse = True则可改为降序,同样是永久修改。
bicycles = [2, 1, 6, 3, 9]
print(bicycles)

bicycles.sort()
print(bicycles)

bicycles.sort(reverse=True)
print(bicycles)

输出:
[2, 1, 6, 3, 9]
[1, 2, 3, 6, 9]
[9, 6, 3, 2, 1]
  • 使用sorted()对列表临时排序
    sorted()让我们能够按照特定顺序显示列表元素,但是对列表元素的原始顺序没有任何影响:sorted(iterable),sorted(iterable, reverse = True)
    iterable是指可迭代对象,例如本章的列表,还有后面会介绍的字典等。
bicycles = [2, 1, 6, 3, 9]
print(bicycles)

print(sorted(bicycles))
print(sorted(bicycles,reverse=True))

输出:
[2, 1, 6, 3, 9]
[1, 2, 3, 6, 9]
[9, 6, 3, 2, 1]
  • 反转列表元素排列顺序
    使用方法reverse():list.reverse(),无返回值
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)

bicycles.reverse()
print(bicycles)

输出:
['trek', 'cannondale', 'redline', 'specialized']
['specialized', 'redline', 'cannondale', 'trek']
  • 确定列表的长度
    使用函数len():len(o : sized),参数是一个可量对象,返回对象的大小
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)

length = len(bicycles)
print(length)

输出:
['trek', 'cannondale', 'redline', 'specialized']
4