###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可删除任意位置处的列表元素,条件是知道其索引。
- 使用del语句删除元素:del list[index]
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