一.列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同数据项实用方括号括起来即可.
列表也可以使用切片:原来字符串的切片在这里也可以用
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']