一.列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同数据项实用方括号括起来即可.
列表也可以使用切片:原来字符串的切片在这里也可以用
li=['Google','Runnoob',1997,5000]
print(type(li))
print(li[:])#启用切片打印全部
print(li[-1::-1])#从后往前
执行命令得
<class 'list'>
['Google', 'Runoob', 1997, 5000]
[5000, 1997, 'Runoob', 'Google']
二.Python列表函数和方法
(obj:目标对象 seq:序列号)
python包含以下函数
序号 | 函数 |
1 | len(list) 列表元素个数 |
2 | max(list) 返回列表最大值 |
3 | min(list) 返回列表最小值 |
4 | list(seq) 将元组转为列表 |
Python包含以下方法
序号 | 方法 |
1 | list.append(obj) 统计某个元素在列表中出现的次数 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序号中的多个值(用心列表扩展原来的列表) |
4 | list.index(obj) 在列表中找出某个值第一个匹配的索引位置即下标 |
5 | list.insert(index.obj) 将对象插入列表 |
6 | list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值得第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort([func]) 对原列表进行排序 |
10 | liet.clear() 清空列表 |
11 | list.copy() 复制列表 |
1.列表的增、删、改、查(insert delete update query)
<1>增:
易混淆
list.insert(index,obj)(指定位置增添)
list.append(obj)(在末尾增加)
list.extend(seq)(用新列表扩展原来的列表)
list.insert(index,obj)将对象插入列表超出位置在列表尾部添加
list.append(obj)在列表末追加新的对象
li.append('2018')#追加到末尾
print(li)
li.insert(li.__len__(),'青年')#增加到末尾
print(li)
li.insert(0,'青年节')#增加到第一位
print(li)
执行命令得
['Google', 'Runoob', 1997, 5000, '2018']
['Google', 'Runoob', 1997, 5000, '2018', '青年']
['青年节', 'Google', 'Runoob', 1997, 5000, '2018', '青年']
两个列表还可以进行相加
列表还可以*得操作符
list.extend(seq)再累表末尾一次性追加另一个序列中的多个值
list1.extend(list2)把列表二迭代后追加到列表一,extend()没有返回值
li1=['a','b','c','d']
li2=[1,2,3,4]
li3=[li1,li2]
li.extend(li2)
#for in in li2:#使用append方法将li2加入li1列表中
#li.append(i)
print(li1)
print(li3)
print(li*2)#列表中的元素x2
执行命令得
['a', 'b', 'c', 'd', 1, 2, 3, 4, 3]
[['a', 'b', 'c', 'd', 1, 2, 3, 4, 3], [1, 2, 3, 4, 3]]
['Google', 'Runoob', 1997, 5000, 'Google', 'Runoob', 1997, 5000]
<2>删:
del list[2]删除列表中下标为2得元素
list.pop(int index):把最后一个删除,也可以删除指定下标的元素
list.pop()(obj=list[-1])移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值 参数是下标
list.remove(obj)一处列表中某个值得第一个匹配项
li2=[1,2,3,4,3]
del li2[2]#删除下标为2得元素
print(li2)
del li2[2:]#删除下标2以后的
print(li2)
li2=[1,2,3,4,3]
li2.pop(1)#删除指定下标
print(li2)
li2=[1,2,3,4,3]
li2.remove(3)#只删除第一个匹配项
print(li2)
执行命令得
[1, 2, 4, 3]
[1, 2]
[1, 3, 4, 3]
[1, 2, 4, 3]
<3>改:
li2=[1,2,3,4,3]
li2[2]=1
print(li2)
执行命令得
[1, 2, 1, 4, 3]
<4>查:
list.index(obj)从列表中找出某个值第一个匹配项的索引位置,该方法返回查找对象的索引位置,如果没有找到对象则抛出异常
li=[1,2,3,4,3]
print(li.index(3,3,5))#查找li中下标为3-5值为3得元素下标
执行命令得
4
可用in/not in 可以查找是否存在
li=[1,2,3]
print(1 in li)
print('1'in li)#查找时会判断元素类型
执行命令得
True
False
2.嵌套列表:[['a','b','c'],[1,2,3]]
li1=['a','b','c','d']
li2=[1,2,3,4,3]
li3=[li1,li2]
print(li3)
print(li3[1][3])#在li3中查找li2中下标为3得元素
执行命令得
[['a', 'b', 'c', 'd'], [1, 2, 3, 4, 3]]
4
3.dir(object)将一个数据类型的所有函数的属性打印
li1=['a','b','c','d']
li2=[1,2,3,4,3]
li3=[li1,li2]
print(dir(li3))
执行命令得
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
len()和__len__两类函数的区别:
len()类型代表的是全局函数在哪都可以用
__len__()类型的函数代表私有一般不调用只有在指定函数内部
<1>len(list)列表的元素个数
li1=['a','b','c','d']
print(len(li1))
执行命令得
4
<2>max(list)字母以ascii为依据
返回列表的最大值
min(list)
返回列表的最小值
li1=['a','b','c','d']
print(max(li1))
print(min(li1))
执行命令得
d
a
<3>list(seq)构造函数-->执行时开辟新空间 功能:初始化数据
将元组转化为列表
new_li=(1,2,3)
print(new_li)
new_li=list((1,2,3))
print(new_li)
执行命令得
(1, 2, 3)
[1, 2, 3]
print(id(li1))#返回变量 对象的内存地址
print(id(li2))
执行命令得
78116144
78116744
<4>list.reverse()反向列表中元素
list.sort([func])对原列表进行排序 如果指定参数,则使用比较函数比较(func:函数)
li1=['a','b','c','d']
li1.reverse()#反向列表中的元素
print(li1)
li=[7,5,9,6,1,4,]
li.sort()#排序
print(li)
执行命令得
['d', 'c', 'b', 'a']
[1, 4, 5, 6, 7, 9]
<5>list.clear()清空列表
list.copy()复制列表
li1=['a','b','c','d']
li2=[1,2,3,4,3]
li1.clear()#清除
print(li1)
li5=li2.copy()#复制
print(li5)
执行命令得
[]
[1, 2, 3, 4, 3]
复制得几种不同
a=[1,2,3]
b=a
b[2]=9
print(a)
print(b)#等值 b改变a也变
c=[]
c=a
c[1]=9
print(c)
print(a)
d=a[:]#把 a的值一一取出
d[1]=7
print(d)
print(a)
执行命令得
[1, 2, 9]
[1, 2, 9]
[1, 9, 9]
[1, 9, 9]
[1, 7, 9]
[1, 9, 9]
练习
创建2个列表 一个存姓名 一个存手机
=======通讯录管理系统=======
1.增加姓名和手机
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出
============================
names=['张三']
phones=['123']
while True:
print('=======通讯录管理系统=======')
print('1.增加姓名和手机')
print('2.删除姓名')
print('3.修改手机')
print('4.查询所有用户')
print('5.根据姓名查找手机号')
print('6.退出')
print('============================')
num=int(input('请输入数字:'))
if num==1:
name=input('请输入新姓名:')
phone=input('请输入新电话:')
while phone in phones:
phone = input('电话已存在 请重新输入')
names.append(name)
phones.append(phone)
print('录入成功')
elif num==2:
name = input('请输入姓名:')
if name in names:
index=names.index(name)
del names[index]
del phones[index]
print('删除成功')
else:
print('此用户不存在')
elif num==3:
phone = input('请输入电话:')
if phone in phones:
new_phone=input('请输入新的电话:')
while new_phone in phones:
new_phone=input('新的电话已存在 请重新输入:')
index=phones.index(new_phone)
phones[index]=new_phone
print('修改成功')
else:
print('此电话不存在')
elif num==4:
for i in range(names.__len__()):
print(names[i],phones[i])
elif num==5:
name = input('请输入姓名:')
if name in names:
index = names.index(name)
print("电话",phones[index])
else:
print('电话不存在')
elif num==6:
break
print('谢谢使用')
练习
列表遍历:可以使用while,for
while
season=['spring','summer','autumn','winter']
i=0
while i<len(season):
print(season[i])
i+=1
执行命令得
spring
summer
autumn
winter
for(一种直接获得一种通过下标获得)
season=['spring','summer','autumn','winter']
for i in range(season.__len__()):
print(season[i])
for i in season:
print(i)
执行命令得
spring
summer
autumn
winter
练习
一个字符串将其分割成列表且数据类型为整型
v="1,2,5,7".split(',')
print(v)
执行命令得
['1', '2', '5', '7']