变量类型-List
-
list
列表的数据项不需要具有相同的类型
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套。
-
列表取值
列表用 [ ] 标识,是 python 最通用的复合数据类型。my_list01=[1,3,5,7,9,11]
#my_list01 # 输出完整列表
#my_list01[0] # 输出列表的第一个元素
#my_list01[-1] # 输出列表的最后一个元素
for item in my_list01:
print(item)for i in range(len(my_list01)): print(my_list01[i]) 加号 + 是列表连接运算符,星号 * 是重复操作。 my_list02=[10,30,50] my_list03=my_list01+my_list02 #列表合并 my_list04=my_list01*3
-
切片
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
list=[1,3,5,7,9,11] # 获取第二个至第三个元素 list[1:3] # 获取从第三个开始至列表末尾的所有元素 list[2:] # 获取从第0个开始至第五个列表元素 list[:5] # 获取列表所有元素 list[:] # 步长为2 list[::2] # 反转数组 list[::-1] # 从后往前截取 list[-1:-3:-1]
-
list 内置函数
fruits = ['orange', 'apple', 'pear', 'banana']
-
统计
print (fruits.count('apple'))
-
判断是否存在
如果没有找到会异常 print (fruits.index('apple')) print ('apple' in fruits) # 从第三个位置开始寻找 # print (fruits.index('apple',3))
-
反转
fruits.reverse()
-
排序
fruits.sort()
-
增加元素
fruits.append('kiwi') # 增加集合 fruits.extend(['kiwi','water'])
-
合并两个列表
new_fruits=fruits+['kiwi','water']
-
插入元素
fruits.insert(0,'pick');
-
删除聊表末尾的元素
# fruits.pop() # fruits.pop(index) 删除指定位置的元素
-
删除元素
# fruits.remove('apple') # fruits.remove(fruits[2]) # del fruits[1] # 删除单个元素 # fruits[1:2]=[] # 删除多个元素 # fruits[2:4]=[]
-
替换元素
# fruits[0:3]=['橙子','苹果','梨']
-
拷贝
浅拷贝
fruits_copy01=fruits[:] fruits_copy02=fruits.copy()
深拷贝
清空元素
# fruits.clear() # del fruits[:] #不同于del fruits # fruits[ : ]=[]
-
最大最小值
# print(max(fruits)) # print(min(fruits))
-
-
多维数组
list01=[1,3,[5,7,9,11]]
-
浅拷贝
list02=list01.copy() list03=list01[:]
-
深拷贝
import copy list02=copy.deepcopy(list01)
-
-
栈和队列
from collections import deque fruits = ['orange', 'apple', 'pear', 'banana'] # from collections import deque # queue = deque(fruits) # 先进先出 queue.append('haha') queue.popleft() # 先进后出 queue.append('') queue.pop() print(list(queue))
-
列表初始化,插值表达式
squares=[] squares=[x**2 for x in range(10)] vec = [-4, -2, 0, 2, 4] vec2=[x*2 for x in vec] vec3=[x for x in vec if x >= 0] vec4=[abs(x) for x in vec] print ([(x, x**2) for x in range(6)]) squares=[] squares=list(map(lambda x: x**3, range(10))) #lists=[[(x, y) 外层循环 内层循环 if x != y]] lists=[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] # [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] 去掉列表元素单词左右空格 # freshfruit = [' banana', ' loganberry ', 'passion fruit '] # # # 去掉单词左右空格 # freshfruit=[weapon.strip() for weapon in freshfruit] 读取二维数组 vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] list1=[num for elem in vec for num in elem] list2=[[elem[i] for elem in vec] for i in range(3)] print(list2)
-
list去重
方法一:新建新数组
方法二:
list01=[1,2,2,2,3,4,2,5,4,2] le=len(list01) i=0 while i<le-1: j=i+1 while j<le: if list01[i]==list01[j]: list01.remove(list01[i]) le-=1 i-=1 break j+=1 i+=1 print(list01)
方法三:(删除后面所有与当前元素相同的元素)
list01=[1,2,2,2,3,4,2,5,4,2] le=len(list01) i=0 while i<le-1: j=i+1 while j<le: if list01[i]==list01[j]: list01.pop(j) le-=1 j-=1 j+=1 i+=1 print(list01)
-
python中的list和array的不同之处
python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。
补充了解:map()
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
map(function, iterable, ...)
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。
arr=[1,2,3,4]
mm=map(lambda x:x ** 2,arr)
print(next(mm))
for res in mm:
print(res)