一句废话都没有的Pycharm(五):列表
介绍
- 列表
- 列表的创建
- 列表的查询
- 列表的增删改
- 列表元素的排序
- 列表的合并
- 列表生成式
1.列表
列表相当于其他语言中的数组,可存储多个元素,方便了程序对这些元素的操作。
列表内可以存字符串,(int型、float型)数据等等不同类型的对象,相当于,背包里可以放杯子、纸巾等等。
例如:
list=['hi','hello',4,2.999]
列表的特点:
索引时,正逆都可以用。
索引(正 ) | 0 | 1 | 2 | 3 |
---|---|---|---|---|
元素 | ‘hi’ | ‘hello’ | 4 | 2.999 |
索引(逆 ) | -4 | -3 | -2 | -1 |
2. 列表的创建
需要使用中括号,元素间用逗号隔开。
两种创建方式:
- 使用方括号创建列表
- 使用内置函数list()创建列
代码演示:
#使用方括号创建列表
lis=[123,'we',23.89]
print(lis)
#使用内置函数list()创建列表
lis1=list([123,'we',23.89])
print(lis1)
print(lis1[0],lis1[-3])#正序索引的逆序索引都可以
结果演示:
3. 列表的查询
骨骼图:
代码展示:
#列表
#使用方括号创建列表
lis=[123,'we',23.89]
print(lis)
#使用内置函数list()创建列表
lis1=list([123,'we',23.89,'we'])
print(lis1)
print(lis1[0],lis1[-3])#正序索引的逆序索引都可以
#查找
#(从元素)获取元素的索引index()
print(lis1.index('we'))#查询对象重复存在于列表中,只输出重复元素的第一个索引
print(lis1.index('we',1,3))#在索引1-3中查找,但是不包括索引3
#print(lis1.index('are'))#查询对象不存在于列表中,输出ValueError
#(从索引)获取单个元素
print(lis1[1])#正向索引
print(lis1[-2])#逆向索引
#print(lis1[6])#索引不存在输出IndexError
#获取多个元素
lis2=[1,2,3,4,5,6,7,8,9]
print(lis2)
print(lis2[2:7])#[2,5)左闭右开
print(lis2[2:7:2])#step为2
print(lis2[-3:-8:-2])#逆序输出
print(lis2[::-1])#逆序输出
#判断元素是否在列表中
print(1 in lis2)
print(10 not in lis2)
#遍历
'''
for 迭代变量 in 列表名:
操作
'''
for s in lis1:
print(s)
结果展示:
4.列表的增删改
4.1增
骨骼图:
代码展示:
#增
#append
lis3=[1,2,3]
print(lis3)
lis3.append(56)#在列表末尾添加一个元素
print(lis3)
lis4=['hi','lihuanying']
lis3.append(lis4)
print(lis3)
'''输出:1, 2, 3, 56, ['hi', 'lihuanying']],
可以发现append()将lis4看作一个元素添加到lis3后了'''
#extend
lis3=[1,2,3]
lis3.extend(lis4)#在列表末尾至少添加一个元素
print(lis3)#输出结果为:[1, 2, 3, 'hi', 'lihuanying']
#insert
lis3=[1,2,3]
lis3.insert(1,5)# 在列表1位置添加一个元素,原来元素后移
print(lis3)
#切片
lis3[2:3]=lis4#2及之后的元素被切掉,且被lis4替换
print(lis3)
结果:
4.2删
骨骼图:
代码演示:
#删
#remove
lis5=[1,1,2,3,4,4,5]
print(lis5)
lis5.remove(1)#一次删除一个,重复元素的话,只删第一个
print(lis5)
#lis5.remove(7)#不存在的话,输出ValueError
#pop
lis5.pop(3)#删除指定索引上的元素
print(lis5)
#lis5.pop(7)#索引不存在时,输出IndexError
lis5.pop()#不指定索引时,删列表最后一个
print(lis5)
#切片
lis5=[1,1,2,3,4,4,5]
print(lis5)
lis5[2:5]=[]
print(lis5)
#清空列表
lis5.clear()
print(lis5)
#删除列表
del lis5
#print(lis5)#NameError: name 'lis5' is not defined
结果:
4.3 改
- 给指定索引元素赋新值
- 给指定切片元素赋新值
代码:
#改
#给指定索引元素赋新值
lis5=[1,1,2,3,4,4,5]
print(lis5)
lis5[1]=9
print(lis5)
#给指定切片元素赋新值
lis5[1:4]=[6,7,8]
print(lis5)
结果展示:
5. 列表元素的排序
骨骼图:
代码展示:
#排序
#sort(),默认升序
lis6=[2,4,3,7,5,8,1,9,0]
print(lis6,id(lis6))
lis6.sort()
print(lis6,id(lis6))#id相同,说明在原列表内排序
lis6.sort(reverse=True)#降序
print(lis6,id(lis6))
#内置函数sorted(),默认升序
lis6=[2,4,3,7,5,8,1,9,0]
newlis=sorted(lis6)
print(lis6,id(lis6))
print(newlis,id(newlis))#id不相同,会产生一个新的列表对象
newlis1=sorted(lis6,reverse=True)
print(newlis1,id(newlis))#降序
结果:
6. 列表的合并
列表的合并结果为字典形式。
#合并两个列表,合并后为字典形式
constellation=['白羊座','金牛座','双子座']
nature=['热情奔放','踏实靠谱','风趣幽默']
co=dict(zip(constellation,nature))
print(co)
结果:
7.列表生成式
列表生成式是生成列表的公式。
语法
i*i for i in range(1,5)
为列表元素的表达式,可自定义。语法中range(1,5),则s为[1,2,3,4],进一步输出为s*s:[1,4,9,16]。range内可自行更改。
代码演示:
#列表生成式
list=[s*s for s in range(1,5)]
print(list)
结果
例子,输出为[1,3,5,7,9],应怎么定义 列表生成式?
解:代码如下:
#列表生成式
list=[s*s for s in range(1,5)]
print(list)
#输出为[1,3,5,7,9],应怎么定义 列表生成式?
list=[(s-1)*2+1 for s in range(1,6)]
print(list)
#刚学python的小朋友们,敲代码时小心冒号哦。