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]] 
  1. 列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.

  2. 如果有if条件语句,for遍历后紧跟着进行条件判断.

  3. 如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积,既任意的一个成员对加上任意另一个成员.

  4. 可以进行嵌套的列表推导,与嵌套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)进行转化