day04 python
一.列表
1.什么是列表
列表是可变的数据类型: 和字符串不同, 做的操作直接改源数据
列表由[]来表示, 每项元素用逗号隔开.列表什么都能装,能装对象的对象
列表可以装大量的数据
2.列表的索引和切片
和字符串的索引和切片用法一样
3.列表的增删改查
增
lst = [1,2,3,4]
lst.append('5') #追加, 加到最后
print(lst)
lst.insert(0, '0') #插入, 后面的项依次向后移动, 效率低
print(lst)
lst.extend(['bajie']) #扩展, 迭代添加, 根据迭代的对象进行迭代
print(lst)
lst.extend('bajie') #扩展, 迭代添加, 根据迭代的对象进行迭代
print(lst)
删
print(lst.pop(2)) #弹出index的元素, 默认:删最后一个, 返回pop 删掉的元素
print(lst)
print(lst.remove(1)) #删哪个元素, 没有返回值, 如果不存在, 会报错
print(lst)
del lst[1] #切片和索引删
print(lst)
lst.clear() #清空, 结果是空列表
print(lst)
改
lst[0] = 'bajie' #索引替换
print(lst)
lst[0:2] = ['bajie'] #切片改, 是迭代改
print(lst)
lst[0:2] = 'bajie' #切片改, 是迭代改
print(lst)
lst[::2] = ['2','3','4'] #步长不是1时, 要注意改的数和要改的数要一样
print(lst)
查
lst = ['bajie', 'wukong', 'datang']
for item in lst:
print(item)
4.列表的嵌套
lst1 = [1,2,3] #一维
lst2 = [1,2,3,[4,5,6]] #二维
lst3 = [1,2,3,[4,5,6,[7,8,9]]] #三维
#lst4 ... ... #以此类推
print(lst3[3][3][2]) #取到的是 9 , 这种操作叫做降维操作
5.列表的其他操作
lst = [2,3,1,6,88,3,3,2,55,9]
lst.sort() #排序. 默认是升序
print(lst)
lst.sort(reverse=True) #排序. 降序
print(lst)
lst.reverse() #反转
print(lst)
len(lst) #求什么的长度
二.元组
只读列表, 只能看,啥都不能干
使用()表示元组
(1,) #单元素元组, 要加个逗号
print(tuple()) #空元组, 要这样写
tu = (1, 2, 3, ['1','2']) #列表虽然是不可变的, 但是里面的元素如果是可变的, 那么这个可变的元素的内容可变
tu[3][0] = 'bajie' #元组的第一层是不能进行赋值的, 内部元素的内容是没有要求的
print(tu)
三.range()
是一个可迭代对象
for i in range(10): #默认从 0 开始, 猜不到结尾
print(i)
for i in range(1,10): #猜到了开头, 猜不到结尾
print(i)
for i in range(1,10,2): #支持步长, 步长也支持负数
print(i)
lst = ['bajie','wukong','datang','laosha'] # lst 的长度 len(lst)
for i in range(len(lst)): # 元素下标从 0 开始, 最后一个下标比 len(lst) 小一个
print(lst[i]) # range() 从0开始, 又不猜最后一个: 所以 range(len(lst)) 迭代出来就对应列表的元素的下标
print(range(10)) #python3 中的range 和python2 中的xrange 是一个东西
>>>range(0, 10)
print(range(10)) #python2 有两个range
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(xrange(10))
>>>xrange(10)