Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
li = [33.33,'google','ok']
数据类型: 增删改查
列表中的增删改查:
增加: list1.append() list1.extend() list1.insert()
list1 = ['a','b','c']
list2 = [1,2,3]
list1.append('2018')
list1.append(list2) #输出效果 ['a', 'b', 'c', '2018', [1, 2, 3]]
list1.extend(list2) #输出效果 ['a', 'b', 'c', '2018', 1, 2, 3] 相当于list2中的每个值迭代进入list1中
list1.insert(2,'2020')
list1.insert(list1.__len__(),'000') #如果超出了元素个数,就直接在尾部添加
print(list1*2)
删除: list1.pop() list1.remove() del list1[:]
list1 = ['a','b','c','b','b']
list2 = [1,2,3]
list1.pop(-1) #输出['a', 'b', 'c', 'b'] 删掉制定位置的列表元素,默认是pop掉最后一位
list1.remove('b') #输出['a', 'c', 'b'] 有相同值得时候,删掉第一个
del list1[1:] #输出['a'] 删除列表中的一个区间,也可以整体删除list1
改值:
list1 = ['a','b','c','b','b']
list1[1] = '666' #输出['a', '666', 'c', 'b', 'b'] 更改并替换
查找: list.index()
list1 = ['a','b','c','b','b']
print(list1.index('c')) #输出2,找到元素c所对应的索引值
print('a'in list1) #输出True,得到一个布尔值
将一个数据类型的所有函数和属性,输出
print(dir(list2))
输出结果:['__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()__
最大值最小值max()和min()
list1 = ['a','b','c','b','b']
list2 = [1,2,3]
list3 = ['青','年','节']
print(min(list1)) #输出a
print(max(list2)) #输出3
print(max(list3)) #输出青
最大最小的原则是依据ASCII码的排列
id数值:
list3 = ['青','年','节']
print(id(list3)) #481637624904
print(id(list3[1])) #798903750128
print(id(list3[2])) #798903748848
*构造函数---->开辟新空间,初始化数据list()
将元组转化为列表:
tuple1 = (1,2,3)
print(list(tuple1)) #输出[1, 2, 3]
排列,反转
list1 = ['a','b','c','b','b']
list1.sort() #输出['a', 'b', 'b', 'b', 'c']
list1.reverse() #输出['b', 'b', 'c', 'b', 'a']
list1.clear() #输出[]清除了list1中的所有元素
拷贝注意事项:
list1 = ['a','b','c','b','b']
list5 = list1.copy()
print(list5) ['a', 'b', 'c', 'b', 'b'] #list5拷贝成一个元素一模一样的列表,浅拷贝
print(list1) ['a', 'b', 'c', 'b', 'b']
list5[0] = '000'
print(list5) ['000', 'b', 'c', 'b', 'b'] #list5中元素修改后,只影响list5本身,而不影响list1
print(list1) ['a', 'b', 'c', 'b', 'b']
list1将值赋予list5 和list1=list5有区别
list1 = ['a','b','c','b','b']
list5 = list1
print(list1) #['a', 'b', 'c', 'b', 'b']
print(list5) #['a', 'b', 'c', 'b', 'b']
list5[0] = '666'
print(list1) #['666', 'b', 'c', 'b', 'b']
print(list5) #['666', 'b', 'c', 'b', 'b']
list1 = ['a','b','c','b','b']
list5 = list1[:]
print(list1) #['a', 'b', 'c', 'b', 'b']
print(list5) #['a', 'b', 'c', 'b', 'b']
list5[0] = '666'
print(list1) #['a', 'b', 'c', 'b', 'b']
print(list5) #['666', 'b', 'c', 'b', 'b']
练习:创建2个列表,一个存姓名,一个存手机 ============通讯录管理系统============= 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出names=['张三','李四']
phones=['1111111111','2222222222']
print('***********************')
while(True):
print('=======通讯录管理系统======= ')
print('1.增加姓名和手机')
print('2.删除姓名')
print('3.修改手机')
print('4.查询所有用户')
print('5.根据姓名查找手机号')
print('6.退出')
print('============================')
i=int(input('请选择:'))
if(i==1):
name=input('请输入姓名:')
phone=input('请输入电话:')
while phone in phones:
phone=input('电话已存在,重新输入电话:')
names.append(name)
phones.append(phone)
print('录入成功')
elif i==2:
name = input('请输入姓名:')
if name in names:
index=names.index(name)
# names.pop(index)
# phones.pop(index)
del names[index]
del phones[index]
print('删除成功')
else:
print('名字不存在')
elif i==4:
for i in range(names.__len__()):
print(names[i],phones[i])
print('输出完毕')
elif i==3:
phone = input('请输入电话:')
if phone in phones:
new_phone = input('请输入新的电话:')
while new_phone in phones:
new_phone = input('新的电话已存在,重新输入电话:')
index=phones.index(phone)
phones[index]=new_phone
print('更新成功')
else:
print('电话不存在')
elif i == 5:
name = input('请输入姓名:')
if name in names:
index = names.index(name)
print('电话:',phones[index])
else:
print('名字不存在')
elif i == 6:
print('谢谢使用')
break