python学习(列表,元祖)
1.列表
在Python中,用方括号([]),来表示列表,并用逗号来分隔其中的元素。下面是一个列表,以及操作方法。
li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']
print(li)
1.增
li.append("da") #在列表最后增加”da“
print(li) #[1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds', 'da']
li.insert(1,"hs") # 在列表第一给元素前插入hs 1为索引位置
print(li) #[1, 'hs', 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds']
li.extend("fsf") #在元素末尾迭代增加字符串中每个最小元素
print(li) #[1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds', 'f', 's', 'f']
li.extend(1)
print(li) #TypeError: 'int' object is not iterable 数字类型不是可迭代对象
li.extend([1,2,3,"hfh"]) #在列表中迭代增加列表 [1,2,3,"hfh"]中每个最小元素
print(li) #[1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds', 1, 2, 3, 'hfh']
2.删
li.clear() #清空列表
print(li) # []
del li[0] #删除列表中第一给元素0是索引位置
print(li) #[2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds']
del li[0:6] #切片删除第一个到第五个的元素
print(li) #['afds']
del li[0:] #切片删除 所有的元素
print(li) #[]
del li # 删除列表
print(li) # 报错 NameError: name 'li' is not defined
li.remove("afds") # 根据给出的元素值 删除改元素 如果该列表有多个同元素,只删除第一个
print(li) #[1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai']]
li.pop(3) # 根据给定的索引值删除列表中的元素
print(li) #[1, 2, 3, 'alex', [2, 3, 4, 5, 'taibai'], 'afds']
print(li.pop(3)) # alex pop 删除可以有返回值
li.pop() #默认删除最后一个
print(li) #[1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai']]
3.改
li[5] = "ph" # 根据索引值改元素
print(li) #[1, 2, 3, 5, 'alex', 'ph', 'afds']
li[2:6] = "kdlf" #根据索引切片改,并以最小元素迭代增加
print(li) #[1, 2, 'k', 'd', 'l', 'f', 'afds']
li[0:3] = 123 # int不能为可迭代对象
print(li) #TypeError: can only assign an iterable
4.查
列表取一个元素,打印的结果是该元素的特定类型,如果是切片取,打印出来的就是该切片值组成的列表
索引查询,切片索引查询,for i in遍历
print(li[2]) # 3
print(li[3:6]) # [5, 'alex', [2, 3, 4, 5, 'taibai']]
for i in li:
print(i) #遍历整个列表的值,返回的值是该值本质属性
1
2
3
5
alex
[2, 3, 4, 5, 'taibai']
afds
排序
sort() 只能排序全由字母组成或全由数字组成的列表或全是特殊字符组成的列表了,并且一旦排序,永久改变
l1 =[1,8,9,6,4,5,2,3]
l1.sort() # 正向排序 从小到大
print(l1) #[1, 2, 3, 4, 5, 6, 8, 9]
l1.sort(reverse=True) #反向排序 从大到小
print(l1) #[9, 8, 6, 5, 4, 3, 2, 1]
l1.reverse() #反转排序,按元素位置颠倒排序
print(l1) #[3, 2, 5, 4, 6, 9, 8, 1]
l2 = ["d","f","q","fw","A","abc","bq","C","b","ab","a"]
l2.sort() # 字母的排序 正向排序
print(l2) #['A', 'C', 'a', 'ab', 'abc', 'b', 'bq', 'd', 'f', 'fw', 'q']
l2.sort(reverse=True) #字母的反向排序
print(l2) #['q', 'fw', 'f', 'd', 'bq', 'b', 'abc', 'ab', 'a', 'C', 'A']
l2.reverse() # 反转排序
print(l2) #['a', 'ab', 'b', 'C', 'bq', 'abc', 'A', 'fw', 'q', 'f', 'd']
l3 = ["asdd","dsd","o",1,6,"b","$"]
l3.sort()
print(l3) # TypeError: '<' not supported between instances of 'int' and 'str'
l4 = ["+","$","!"]
l4.sort() #排序特殊字符
print(l4) #['!', '$', '+']
使用函数sorted()可以按照特定的顺序显示列表元素,同时不影响他们在列表中的原始排序
cars = ['byd','auto','yamaha','sukiz']
print(sorted(cars)) #['auto', 'byd', 'sukiz', 'yamaha']
print(sorted(cars,reverse=True)) #['yamaha', 'sukiz', 'byd', 'auto']
print(cars) #['byd', 'auto', 'yamaha', 'sukiz']
print(len(cars)) # 4 使用函数len()可以快速知道列表的长度。
l5 = [1,"d",2,"asd",1,1,"we"]
print(l5.count(1)) #3 li.count() 查找元素在列表中出现的次数
l6 = ["ph",2,5,"gd","fs"]
print(l6.index("ph")) # 列表中找元素的索引 # 只能用 index
print(l6.index(8)) #ValueError: 8 is not in list #找不到报错
列表的嵌套
li = ['taibai', '武藤兰', '苑昊', ['alex', 'egon', 89], 23]
print(li[1][1]) #查找列表第二的元素的第二个元素
li[0] = li[0].capitalize()
li[2] = '日天' #把列表中第三个元素改成 日天
li[2] = li[2].replace('昊','ritian')
li[3][0] = li[3][0].upper() # 把列表中第三个元素中的第一个元素改成大写
s = 'hdkf'
s1 = '.'.join(s) # 方法被调用的字符串被插入到没个给定字符串之间。结果作为一个新的字符串返回
print(s1)------>h.d.k.f
s2 = "+".join(s)
print(s2)--------->h + d + k + f
列表转化成字符串 list -----> str 用 "".join()
li = ['taibai','alex','wusir','egon','女神',]
s = '++++'.join(li)
print(s) ----->taibai++++alex++++wusir++++egon++++女神
str ----->list split()
s = "dad;fsf;ewe;teer;te;"
print(s.split";") ------>['dad', 'fsf', 'ewe', 'teer', 'te', '']
元祖
元祖 只读列表,可循环查询,可切片。
儿子不能改,孙子可能可以改 孙子就是嵌套的列表。
tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
print(tu[3]) # #
print(tu[0:4]) # #
for i in tu: # #
print(i) #
tu[4][3]=tu[4][3].upper()
# print(tu) # tu[4].append('sb')
# print(tu)
range
range 是一个有序的数字列表,数字范围 可以自己拟定
for i in range(0, 100):
print(i) # 打印出从0到99的数字,顾头不顾尾
for j in range(0, 100, 2):
print(j) # 打印出从0到99每隔一个取一个的值
for k in range(10, -1, -1):
print(k) # 打印出从10到0的值
for w in range(10, 0, -2):
print(w) # 打印出从10到1每隔一个的值
for s in range(0, 10, -1):
print(s) # 不打印 不报错,不知道是取的什么