第三章 列表简介

第三章 列表

3.1列表是什么

列表由一系列按特定顺序排列的元素组成。数字,字母,字符串等任意元素


python用 [ ] 表示列表

bicycles = ['treck','cannondale','redine','specialized']
print(bicycles)
['treck', 'cannondale', 'redine', 'specialized']

3.1.1访问列表元素

可以看作数组,想要输出某个元素,只需输入索引(数组下标)即可,规则一样下标从零开始

bicycles = ['treck','cannondale','redine','specialized']
print(bicycles[1])
cannondale
print(bicycles[1].title())
Cannondale

3.1.2索引从0而不是1开始

第一个列表元素的索引为0而不是1,大多数编程如此


与列表操作的底层实现有关

bicycles = ['treck','cannondale','redine','specialized']
print(bicycles[3])   #返回第四个元素
specialized

python为访问最后一个元素提供了特殊语法。通过索引-1,-2是倒数第二个元素,-3是倒数第三个

print(bicycles[-1]) #可以使你不知道列表长度情况下输出最后一个元素
print(bicycles[-3])
specialized
cannondale

3.1.3使用列表中的各个值

f"{}"

message = f"My favorite bicycles was a {bicycles[0].title()}"
print(message)
My favorite bicycles was a Treck

3.1.4练习

3-1姓名

name = ['刻晴','甘雨','温迪','公子']
print(name[0])
print(name[1])
print(name[-1])
print(name[-2])
刻晴
甘雨
公子
温迪

3-2问候语

message = f"{name[0]}:刮痧的神"
print(message)
message = f"{name[1]}:刮痧的神"
print(message)
message = f"{name[-2]}:刮痧的神"
print(message)
message = f"{name[-1]}:刮痧的神"
print(message)
刻晴:刮痧的神
甘雨:刮痧的神
温迪:刮痧的神
公子:刮痧的神

3-3自己的列表

Travel_mode = ['car','bicycle','train']
message1 = f"I would like to own a Electric {Travel_mode[0]}"
print(message1)
message2 = f"I would like to own a new {Travel_mode[1]}"
print(message2)
message3 = f"I would like to take {Travel_mode[2]}"
print(message3)
I would like to own a Electric car
I would like to own a new bicycle
I would like to take train

3.2修改、添加和删除元素

3.2.1修改

直接用索引把指定元素重新赋值

name = ['刻晴','甘雨','温迪','公子']
print(name)

name[2] = '凝光'
print(name)
['刻晴', '甘雨', '温迪', '公子']
['刻晴', '甘雨', '凝光', '公子']

3.2.2在列表中添加元素

1.在列表末尾添加元素
.append()附加,好处是不影响其他元素,可以用来创建

name = ['刻晴','甘雨','温迪','公子']
name.append("万叶")
print(name)
['刻晴', '甘雨', '温迪', '公子', '万叶']
name = []

name.append('张三')
name.append('李四')
name.append('王二麻子')
print(name)
['张三', '李四', '王二麻子']

2.在列表中插入元素


insert(位置,值)需要指定索引和值

name = ['刻晴','甘雨','温迪','公子']

name.insert(2,'凝光')
print(name)
['刻晴', '甘雨', '凝光', '温迪', '公子']

3.2.3从列表中删除元素|

1.使用del语句中删除元素,必须得知道位置


用法:del 列表名[x]


删除是永久删除,无法访问

name = ['刻晴','甘雨','温迪','公子']

del name[3]
print(name)
['刻晴', '甘雨', '温迪']

2.使用方法。pop()删除末尾元素


术语 弹出(pop)源自类比:将列表看作一个栈,而删除列表末尾的元素相当于弹出栈顶元素

name = ['刻晴','甘雨','温迪','公子']
print(name)

popped_name = name.pop()
print(name)
print(popped_name)
['刻晴', '甘雨', '温迪', '公子']
['刻晴', '甘雨', '温迪']
公子

用处:比如列表是按时间顺序排序的,可以打印出最近一条消息

name = ['刻晴','甘雨','温迪','公子']

popped_name = name.pop()
print(f"The first 角色 is {popped_name}")
The first 角色 is 公子

3.弹出列表中任何位置处的元素


只需在pop()中指直接输入索引,就可以指定弹出

name = ['刻晴','甘雨','温迪','公子']

popped_name = name.pop(2)
print(popped_name)
温迪

使用标准:如果你想删除一个元素,并且不再以任何方式访问它,用del;如果还想用,则用pop()

4.根据值删除元素


.remove()直接输入值,删除的元素还可以使用

name = ['刻晴','甘雨','温迪','公子']

name.remove("公子")
print(name)
['刻晴', '甘雨', '温迪']
name = ['刻晴','甘雨','温迪','公子','护摩']
print(name)

no_have = '护摩'
name.remove(no_have)
print(name)
print(f"I don't have {no_have}")
['刻晴', '甘雨', '温迪', '公子', '护摩']
['刻晴', '甘雨', '温迪', '公子']
I don't have 护摩

注意:remove()只能删除一个元素,若有多个相同的,则需要循环删除

3.2.4练习

3-4嘉宾名单

name = ['python','Java','C++']
print(f"嘉宾名单:{name}")
嘉宾名单:['python', 'Java', 'C++']
print(f"无法赴约嘉宾:{name[1]}")
无法赴约嘉宾:Java
name[1] = "张三"
print(name)
print(f"请{name[0]}于2021年4月21日12点15分参加")
print(f"请{name[1]}于2021年4月21日12点15分参加")
print(f"请{name[2]}于2021年4月21日12点15分参加")
['python', '张三', 'C++']
请python于2021年4月21日12点15分参加
请张三于2021年4月21日12点15分参加
请C++于2021年4月21日12点15分参加

3-6 添加嘉宾

print("我们找到了一个更大的餐桌")

name.insert(0,"爱因斯坦")
name.insert(2,"傅里叶")
name.append("李白")
print(name)

print(f"请{name[0]}于2021年4月21日12点15分参加")
print(f"请{name[1]}于2021年4月21日12点15分参加")
print(f"请{name[2]}于2021年4月21日12点15分参加")
print(f"请{name[3]}于2021年4月21日12点15分参加")
print(f"请{name[4]}于2021年4月21日12点15分参加")
print(f"请{name[5]}于2021年4月21日12点15分参加")
我们找到了一个更大的餐桌
['爱因斯坦', 'python', '傅里叶', '张三', 'C++', '李白']
请爱因斯坦于2021年4月21日12点15分参加
请python于2021年4月21日12点15分参加
请傅里叶于2021年4月21日12点15分参加
请张三于2021年4月21日12点15分参加
请C++于2021年4月21日12点15分参加
请李白于2021年4月21日12点15分参加
print("我们又谈崩了,只能邀请两个人")
name = ['爱因斯坦', 'python', '傅里叶', '张三', 'C++', '李白']
print(name)
popped_name1 = name.pop(0)
print(f"尊敬的{popped_name1}我很抱歉,没有经费,无法邀请您到共进晚餐")
popped_name2 = name.pop(1)
print(f"尊敬的{popped_name2}我很抱歉,没有经费,无法邀请您到共进晚餐")
popped_name3 = name.pop(1)
print(f"尊敬的{popped_name3}我很抱歉,没有经费,无法邀请您到共进晚餐")
popped_name4 = name.pop(2)
print(f"尊敬的{popped_name4}我很抱歉,没有经费,无法邀请您到共进晚餐")

print(f"尊敬的{name[0]},您依然可以参加我们的晚会")
print(f"尊敬的{name[1]},您依然可以参加我们的晚会")

del name[0]
del name[0]
print(name)
我们又谈崩了,只能邀请两个人
['爱因斯坦', 'python', '傅里叶', '张三', 'C++', '李白']
尊敬的爱因斯坦我很抱歉,没有经费,无法邀请您到共进晚餐
尊敬的傅里叶我很抱歉,没有经费,无法邀请您到共进晚餐
尊敬的张三我很抱歉,没有经费,无法邀请您到共进晚餐
尊敬的李白我很抱歉,没有经费,无法邀请您到共进晚餐
尊敬的python,您依然可以参加我们的晚会
尊敬的C++,您依然可以参加我们的晚会
[]

3.3组织列表

有时候需要初始元素顺序,有时候又要调整列表顺序

3.3.1使用方法sort()对列表永久排序

sort()无返回值a.sort()已经将a列表结构改变,用b=a.sort()是错误的

cars = ['bmw','audi','toyota','subaru']
cars.sort()   # 按照字母顺序排序
print(cars)   # 永久性的排列顺序,且无法恢复到原来的顺序
['audi', 'bmw', 'subaru', 'toyota']
cars.sort(reverse = True)
print(cars)
['toyota', 'subaru', 'bmw', 'audi']

3.3.2用函数sorted()对列表临时排序

cars = ['bmw','audi','toyota','subaru']

print("Here is the original list:")
print(cars)

print("Here is the sorted list:")
print(sorted(cars))

print("Here is the original again:")
print(cars)
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original again:
['bmw', 'audi', 'toyota', 'subaru']

3.3.3倒着打印列表

用方法reverse()可永久性修改元素的排列顺序,但可随时恢复,再调用一次reverse即可

cars = ['bmw','audi','toyota','subaru']

cars.reverse()
print(cars)
['subaru', 'toyota', 'audi', 'bmw']

3.3.4确定列表长度

直接用函数len()

len(cars)
4

3.3.4练习

3-8放眼世界

want_go = ['shenzhen','shanghai','England','hanghzou','guigu']
print(want_go)
print(sorted(want_go))
print(want_go)
want_go.reverse()
print(want_go)
want_go.reverse()
print(want_go)

want_go.sort()
print(want_go)
want_go.sort(reverse = True)
print(want_go)
['shenzhen', 'shanghai', 'England', 'hanghzou', 'guigu']
['England', 'guigu', 'hanghzou', 'shanghai', 'shenzhen']
['shenzhen', 'shanghai', 'England', 'hanghzou', 'guigu']
['guigu', 'hanghzou', 'England', 'shanghai', 'shenzhen']
['shenzhen', 'shanghai', 'England', 'hanghzou', 'guigu']
['England', 'guigu', 'hanghzou', 'shanghai', 'shenzhen']
['shenzhen', 'shanghai', 'hanghzou', 'guigu', 'England']

3-9晚餐嘉宾

name = ['爱因斯坦', 'python', '傅里叶', '张三', 'C++', '李白']
a = len(name)
message = f"共邀请了{a}个嘉宾"
print(message)
共邀请了6个嘉宾

3-10前面所有函数再用一遍

country = ['China','America','England','Japan']
print(country)
# 修改
country[3] = 'Italy'
print(country)
# 添加
country.append("Frank")  # 末尾加
print(country)
country.insert(2,'Janpan')  # 任意位置加
print(country)

#删除
del country[1]  # 无法再访问
print(country)

popped_c1 = country.pop()  # 弹出末尾
print(country)
print(popped_c1)

popped_c2 = country.pop(3) #弹出指定
print(country)
print(popped_c2)

c3 = 'Janpan'
country.remove(c3)  # 按值删
print(country)
print(c3)

print('------排序------')
country2 = ['China', 'America', 'Janpan', 'England', 'Italy', 'Frank']

print("------临时排序-----")
print(sorted(country2))
print(country2)

print("------永久排序-----")
country2.sort()
print(country2)
print("------永久倒着排序-----")
country2.sort(reverse = True)
print(country2)

print("------永久倒着打印-----")
country2.reverse()
print(country2)

a = len(country)
b = len(country2)
print(f"第一个国家列表长度为:{a},\n第二个国家列表长度为:{b}")
['China', 'America', 'England', 'Japan']
['China', 'America', 'England', 'Italy']
['China', 'America', 'England', 'Italy', 'Frank']
['China', 'America', 'Janpan', 'England', 'Italy', 'Frank']
['China', 'Janpan', 'England', 'Italy', 'Frank']
['China', 'Janpan', 'England', 'Italy']
Frank
['China', 'Janpan', 'England']
Italy
['China', 'England']
Janpan
------排序------
------临时排序-----
['America', 'China', 'England', 'Frank', 'Italy', 'Janpan']
['China', 'America', 'Janpan', 'England', 'Italy', 'Frank']
------永久排序-----
['America', 'China', 'England', 'Frank', 'Italy', 'Janpan']
------永久倒着排序-----
['Janpan', 'Italy', 'Frank', 'England', 'China', 'America']
------永久倒着打印-----
['America', 'China', 'England', 'Frank', 'Italy', 'Janpan']
第一个国家列表长度为:2,
第二个国家列表长度为:6

3.4避免错误

country = ['China','America','England','Japan']
print(country[5])
---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-125-ac0ba5b37012> in <module>
      1 country = ['China','America','England','Japan']
----> 2 print(country[5])


IndexError: list index out of range

常见错误:超出范围,即索引错误——输出len()再看该输出那个索引


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值