列表:
why:
1、字符串取值费劲
2、对字符串做任何操作,取出来的都是字符串
3、字符串有长度限制
基于以上原因,python提供了另一个数据类型,list 容器类数据类型。
列表页脚数组,可以存放不同的数据类型,而且可以存储大量数据
32位python的限制是 536870912 个元素,
64位python的限制是 1152921504606846975 个元素
而且列表是有序的,有索引值,可切片,方便取值。
使用列表:
1、索引, 切片 (步长)
2、增删改查
3、其他操作方法
用在哪些地方:
存储大量数据,并且保持原数据类型时,需要列表
安装顺序,或者按照一定规则存储数据
列表的使用:
索引,切片
l1 = ['wusir', 'alex', '日天', '太白', 100 ,'太白']
s1 = l1[1]
print(s1, type(s1))
i1 = l1[-1]
print(i1, type(i1))
l2 = l1[:3]
print(l2)
l3 = l1[:-4:-1]
print(l3)
增 append, inset, extend
1、append 只能加一个值,可以是字符串,数字,列表,字典,集合
l1 = ['wusir', 'alex', '日天', '太白', 100 ,'太白']
l2 = l1.append(' ')
print(l1) # ['wusir', 'alex', '日天', '太白', 100, '太白', ' ']
往列表中间加值:
name_list = []
while 1:
username = input('请输入姓名: ').strip()
if username.upper() == 'Q':
break
name_list.append(username)
print(name_list)
2、inset
l1 = ['wusir', 'alex', '日天', '太白', 100 ,'太白']
l1.insert(1, [1, 2, 3, 44]) # 索引+ 值(可以是任何数据类型)
print(l1)
3、extend
extend 迭代追加,如果是字符串,则将字符串的每一个字符,追加至列表。如果是字典,则只增加key到列表中
l1 = ['wusir', 'alex', '日天']
l1.extend('abc') # ['wusir', 'alex', '日天', 'a', 'b', 'c']
l1.extend(['alex', 'echo']) #['wusir', 'alex', '日天', 'alex', 'echo']
l1.extend({'name': 'echo', 'age': 18}) #['wusir', 'alex', '日天', 'name', 'age']
print(l1)
删: pop,remove,clear,del
pop: 只能根据索引取值,超出范围会报错
l1 = ['wusir', 'alex', '日天']
ret = l1.pop(0) # 按照索引删除,不支持切片
print(ret) # 有返回值
print(l1) # ['alex', '日天']
remove :
按照值
l1 = ['wusir', 'alex', '日天', 'wusir']
l1.remove('wusir') # 按照值删除列表,一次只能删除一个值
print(l1)
clear :清空列表里面的值,保留列表
l1 = ['wusir', 'alex', '日天', 'wusir']
l1.clear()
print(l1)
del
1,按照索引删除单个元素 与pop相同
2,按照切片删除一部分元素
3,按照切片(步长)删除一部分元素
l1 = ['wusir', 'alex', '日天', 'wusir']
del l1[-1]
print(l1)
del l1[-1]
print(l1)
del l1[:3]
print(l1)
del l1[:3:2]
print(l1)
改 :
1,按照索引改
2,按照切片改
3,按照切片(步长)改
l1 = ['wusir', 'alex', '日天', 'wusir', 'echo', 123]
l1[0:2] = 'abcd' # ['a', 'b', 'c', 'd', '日天', 'wusir']
print(l1) # 把[0],[1]删除,把'a','b','c','d'添加进去
l1[:3] = ['al', 'echo'] #['al', 'echo', 'wusir']
l1[:3:2] = '太白' # 如果是按步长取值,需要被替换的值必须和替换值个数相等
print(l1) # 替换[0],[2]两个值,'太白'也是两个值。如果两边不相等,则报错
查:
按照索引,按照切片
for i in l1:
print(i)
其他操作:
print(len(l1)) # 测试总个数
count # 计算某个元素出现的个数
print(l1.count('太白'))
index 通过元素找索引找第一个就返回,找不到就报错
sort 排列
l1 = [2, 7, 6, 5, 1, 8, 9]
l1.sort() #正序
print(l1) # [1, 2, 5, 6, 7, 8, 9]
l1.sort(reverse=True) #倒叙
print(l1) # [9, 8, 7, 6, 5, 2, 1]
l1.reverse() # 翻转排列
print(l1) # [9, 8, 1, 5, 6, 7, 2]
列表的嵌套:
l1 = [1, 2, 'taibai', [1, 'alex', 3]]
l1[2] = l1[2].upper() # 将'taibai'换成'TAIBAI' 用列表的改
print(l1) # [1, 2, 'TAIBAI', [1, 'alex', 3]]
l1[3].append('老男孩教育')
print(l1) # [1, 2, 'taibai', [1, 'alex', 3, '老男孩教育']]
l1[3][1] += 'sb' # 将'alex' 改成 'alexsb' 用列表的查和改
print(l1) # [1, 2, 'taibai', [1, 'alexsb', 3]]
元组:
用()表示,里面的数据无法修改 (子数据不能改,孙数据可能可以改)
用tuple表示
tu = (1, '太白', True, [1, 2, 3,] ,(1,2,),{'name':'alex'}, {1,2,3})
支持查,索引,切片,步长
range :
ret = range(1, 10) # 顾头不顾尾 l1 = [1, 2, 3, 4, 5, 6, 7 ,8, 9]
ret = range(1, 10, 2)
for i in ret:
print(i) # 1 3 5 7 9 支持切片,步长
#列表中含有别表,字典,打印所有值 l1 = [1, 2, 3, [44, 55],66, {'name':'echo', 'age': 18}]
for i in l1:
if type(i) == list:
for j in i:
print(j)
elif type(i) == dict:
for x in i:
print(x)
else:
print(i)