Python 学习笔记4
Python 学习笔记
插入操作
list.insert(index,value)
在index前插入value,其他元素向后移动
搭配list.index(value)
寻找下标一起使用
关于列表
list1=list2
列表赋值的本质是将列表的地址赋给另一个变量,也就是说list1和list2指向同一个地址,也就是说对于list1的任何一个操作list2一样受影响(del除外)
而del
本质上是删除这个指针的指向,回收该变量名,但并不涉及内容,也就是说
list1=list2 del list2 print(list1)
在此操作中,list1依然能打印出list2的内容
排序和翻转
list.sort()
默认按照递增顺序进行排序,可以通过更改reverse参数
True为递减,False为递增
如list.sort(reverse=True)
改为递减顺序
list.reverse()
将列表内所有内容反转
赋值操作
a=b b=c c=a
可简化为
a,b,c=b,c,a
列表嵌套
类比多维数组即可
列表推导式
# in后面跟其他可迭代对象,如字符串 list_c = [7 * c for c in python] print(list_c) # 带if条件语句的列表推导式 list_d = [d for d in range(6) if d % 2 != 0] print(list_d) # 多个for循环 list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)] print(list_e) # 嵌套列表推导式,多个并列条件 list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g != 0] print(list_g)
运行结果
['ppppppp', 'yyyyyyy', 'ttttttt', 'hhhhhhh', 'ooooooo', 'nnnnnnn'] [1, 3, 5] [(0, 25), (0, 100), (1, 25), (1, 100), (2, 25), (2, 100)] [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20]]
-
列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.
-
如果有if条件语句,for遍历后紧跟着进行条件判断.
-
如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积,既任意的一个成员对加上任意另一个成员.
-
可以进行嵌套的列表推导,与嵌套for循环的原理相同.
列表的copy方法
copy模块提供了浅复制和深复制两种方式
浅拷贝
浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容,类比直接等于。
import copy words1 = ['hello', 'good', ['yes', 'ok'], 'bad'] # 浅拷贝只会拷贝最外层的对象,里面的数据不会拷贝,而是直接指向 words2 = copy.copy(words1) words2[0] = '你好' words2[2][0] = 'no' print(words1) # ['hello', 'good', ['no', 'ok'], 'bad'] # wrods2 里的 yes 被修改成了 no print(words2) # ['你好', 'good', ['no', 'ok'], 'bad']
深拷贝
相当于重新创建了一个与原对象内容一样的对象
import copy words1 = ['hello', 'good', ['yes', 'ok'], 'bad'] # 深拷贝会将对象里的所有数据都进行拷贝 words2 = copy.deepcopy(words1) words2[0] = '你好' words2[2][0] = 'no' print(words1) # ['hello', 'good', ['yes', 'ok'], 'bad'] print(words2) # ['你好', 'good', ['no', 'ok'], 'bad']
切片
列表和字符串一样,也支持切片,切片其实就是一种浅拷贝。
元组tuple
和列表相似,但是元组的元素不能够修改,相对于列表,元组使用()
除了修改删除相关函数以外,其他的函数和列表使用方式相同
注意
当要创造只有一个元素的元组时,必须要在元素后加上逗号 如t1 = ('a',)
index(obj,begin,end)
函数可以有三个参数,其中从begin开始,到end-1结束,即左闭右开区间
list 和 tuple 可以相互转化 直接使用list(tuple)
与 tuple(list)
进行转化