一.创建、访问列表元素
1.创建
①中括号
#列表创建 ①[]
lst=['hello','world',98]
②调用内置函数list()
#② 使用内置函数list()
lst2=list(['hello','world',98])
③列表生成式
[列表元素关于i的表达式 for 自定义变量i in 可迭代对象range(1,10)]
#生成列表[2,4,6,8,10]
lst=[i*2 for i in range(1,6)]
2.列表的特点
①元素按顺序有序排列
②索引映射唯一一个数据
③可以存储重复数据
④任意数据类型混存
⑤根据需要动态分配和回收内存
3.获取元素的索引
①返回相同元素的第一个索引
lst=['hello','world',98,'world']
print(lst.index('world')) #1
②元素不在列表中,提示ValueError
③在指定范围查找
#在第二个元素到第三个元素查找(1,3)
lst=['hello','world',98,'hello']
print(lst.index('hello',1,3)) #ValueError: 'hello' is not in list
4.获取元素
① 正向从0到N-1;逆向从-N到-1
bicycles=['trek','cannondale','resline','specialized']
print(bicycles[2])#resline
print(bicycles[-1])#specialized
②指定索引不存在,提示IndexError
print(bicycles[6])#IndexError
③获取多个元素:切片操作 列表名[start:stop:step]
结果:列表片段的拷贝
范围:[start,stop)
step默认为1
step为正数:从start往后计算
step为负数:从start往前计算
lst2=[10,20,30,40,50,60,70,80]
print(lst2[1:6:1])#[1,6) 20,30,40,50,60
print(lst2[::-1])#[7,0] [80, 70, 60, 50, 40, 30, 20, 10]
print(lst2[7::-1])#[7,0] [80, 70, 60, 50, 40, 30, 20, 10]
print(lst2[6:0:-2])#[6,0) [70, 50, 30]
④可调用字符串方法
print(bicycles[2].title())
二.查询、修改、插入、删除元素
1.查询
①查某个元素
某个元素 in/not in 列表名
②遍历所有元素:
for 迭代变量 in 列表名:
操作
#查询元素
lst3=[10,20,'python','hello']
print(10 in lst3)#True
for item in lst3:
print(item,end='\t')
2. 修改
将结果存回原来的变量中
①一次修改一个值
bicycles=['trek','cannondale','resline','specialized']
bicycles[2]='resline1'
print(bicycles)#['trek', 'cannondale', 'resline1', 'specialized']
②一次改多个元素
bicycles=['trek','cannondale','resline','specialized']
bicycles[1:3]=[1,3,5,7,9]
print(bicycles)#['trek', 1, 3, 5, 7, 9, 'specialized']
3. 插入
①末尾插入一个元素:append(内容)
②在列表末尾至少添加一个元素:extend()
bicycles=['trek','cannondale','resline','specialized']
bicycles.append('resline2')
print(bicycles)#['trek', 'cannondale', 'resline', 'specialized', 'resline2']
lst4=['hello','world']
bicycles.extend(lst4)#bicycles.extend('hello','world')报错
print(bicycles)#['trek', 'cannondale', 'resline', 'specialized', 'resline2', 'hello', 'world']
③指定位置插入一个元素:insert(索引,内容)
④指定位置插入至少一个元素:切片
#任意位置插入一个元素
bicycles=['trek','cannondale','resline','specialized']
bicycles.insert(2,'resline3')
print(bicycles)#['trek', 'cannondale', 'resline3', 'resline', 'specialized']
#任意位置插入至少一个元素:切片
lst5=[True,False,'hello']
bicycles[1:]=lst5#从索引为1的元素开始切
print(bicycles)#['trek', True, False, 'hello']
4. 删除
①remove()一次删除一个元素;重复元素只删除第一个;元素不存在抛出ValueError
根据值删除元素,先将值存在一个变量中,也可接着使用它的值
bicycles=['trek','cannondale','resline','specialized']
print(bicycles)#['trek', 'cannondale', 'resline', 'specialized']
bicycles.remove('resline')
print(bicycles)#['trek', 'cannondale', 'specialized']
②pop()删除末尾元素,并且接着使用它。
pop(索引)删除指定位置元素,并且接着使用它;指定索引不存在抛出IndexError。
bicycles=['trek','cannondale','resline','specialized']
print(bicycles)#['trek', 'cannondale', 'resline', 'specialized']
popped_bicycle=bicycles.pop()
print(bicycles)#['trek', 'cannondale', 'resline']
print(popped_bicycle)#specialized
③切片:少删除一个元素
#至将产生一个新的列表对象
bicycles=['trek','cannondale','resline','specialized']
new_bicycles=bicycles[1:3]#[1,3)
print(bicycles,id(bicycles))#['trek', 'cannondale', 'resline', 'specialized']
print(new_bicycles,id(new_bicycles))#['cannondale', 'resline']
#不产生新的列表对象,删除原列表中的内容
bicycles[1:3]=[]
print(bicycles)#['trek', 'specialized']
④请空列表所有元素:clear()
bicycles=['trek','cannondale','resline','specialized']
bicycles.clear()
print(bicycle)#[]
⑤del:删除列表对象;删除指定位置,不再以任何方式使用它。前提是知道索引:del 变量名[索引]
bicycles=['trek','cannondale','resline','specialized']
del bicycles
print(bicycles)#抛出NameError
print(bicycle)#[]
bicycles=['trek','cannondale','resline','specialized']
del bicycles[1]
三.组织列表
1.永久排序sort()
①升序sort()
cars=['bmw','audi','toyota','subaru']
cars.sort()
print(cars)#['audi', 'bmw', 'subaru', 'toyota']
② 降序sort(reverse=True)
cars=['bmw','audi','toyota','subaru']
cars.sort(reverse=True)
print(cars)#['toyota', 'subaru', 'bmw', 'audi']
2.暂时排序sorted()
保留列表元素原来的排列顺序,同时以特定的顺序呈现他们
①升序sorted(列表)
cars=['bmw','audi','toyota','subaru']
print(cars)
new_cars=sorted(cars)
print(new_cars)
②降序sorted(列表,reverse=True)
cars=['bmw','audi','toyota','subaru']
print(cars)
new_cars=sorted(cars,reverse=True)
print(sorted(new_cars))
3.倒着打印列表reverse()
永久的修改排列顺序,但是随时可恢复
cars=['bmw','audi','toyota','subaru']
print(cars)
cars.reverse()
print(cars)
4.确定列表长度len()
cars=[‘bmw’,‘audi’,‘toyota’,‘subaru’]
len(cars)
四.操作列表
1.遍历列表:for
magicians=['alice','david','carolina']
for magician in magicians:
print(magician.title()+",that was a great trick!")
print("I can't wait to see your next trick,"+magician.title()+".\n")
print("Thank you,everyone.That was a great magic show!")
注意:
①别忘记冒号
②for以下代码用缩进表示for的内容
2.创建数值列表
①打印数字1~n:range(1,n+1)
for value in range(1,6):
print(value)
打印1~n中的偶数:range(2,n+1,2)
②数字→列表:list()
numbes=list(range(1,6))
print(numbers)
③创建1~10的平方列表
squares=[]
for value in range(1,11):
squares.append(value**2)
print(squares)
④统计计算数字列表
digits=[1,2,3,4,5]
#min()
print(min(digits))
#max()
print(max(digits))
#sum()
print(sum(digits))
⑤列表解析
将for循环和创建新元素的代码合并成一行,并自动附加新元素
squares=[value**2 for value in range(1,11)]
print(squares)
3.处理列表的部分元素——切片
①切片
输出前三个元素[0:3]:0、1、2
从列表开头开始[:4]:0、1、2、3
到列表尾结束[2:]:1、2、3、4
players=['chareles','martina','michael','florence','eli']
print(players[0:3])
②遍历切片
遍历前三名队员
players=['chareles','martina','michael','florence','eli']
for player in players[:3]:
print(player.title())
③复制列表
my_foods = ['pizza', 'falafel', 'carrot cake']
#看这里
friend_foods = my_foods[:]
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
注意:
不可以是friend_foods = my_foods,这样只是将my_foods赋给friend_foods(两个是一个东西),而不是将friend_foods的副本存储到friend_foods
4.元组:()——不可变的列表
①元组
Python将不能修改的值称为不可变的,而不可变的列表被称为元组
dimentions=(200,50)
print(dimentions[0])
print(dimentions[1])
②遍历元组
dimentions=(200,50)
for dimention in dimentions:
print(dimention)
③修改元组变量
dimentions=(200,50)
for dimention in dimentions:
print(dimention)
dimentions=(400,250)
for dimention in dimentions:
print(dimention)
5.格式设置
①制表符缩进
②每行不超过80字符
③空行