序列
存储多个值的连续内存空间,并且按照一定的顺序排列,每一个值都分配一个数字,称为索引或位置
列表
索引
[1,2,3,4,5,6]
索引从左到右依次为0,1,2,3,4,5
索引从右到左依次为-1,-2,-3,-4,-5,-6
切片
语法:listname[start🔚step]
Listname:列表名称
Start:切片开始位
End:切片截止位
Step:切片步长
例:
List_name = [1,2,3,4,5,6]
Print(List_name[1:4]) #可以取索引1,但不能取索引4的位置
>> 2,3,4
列表相加
列表可以相加但不会去重
例:
List_1 = [1,3,2]
List_2 = [8,7,6,1]
Print(List_1 + List_2)
>> [1,3,2,8,7,6,1]
列表乘法
列表乘以n的结果为原列表内容重复n次的结果
例:
List_1 = [2,1]
Print(List_1 * 3)
>> [2,1,2,1,2,1]
列表成员判定
语法:
Value in list_name 或者 Value not in list_name
Value 在列表中打印出True,否则打印出False
列表计算
列表元素总个数:len(list_name)
列表元素最大值:max(list_name)
列表元素最小值:min(list_name)
创建、删除列表
“=” 创建: list_name = [1,2,3,4]
创建空列表:list_name = [ ]
创建数值列表:list(range(1,12,2)) #创建1到12的列表,不能取值12,同时步长为2
删除列表:del list_name
datetime.datetime.now().weekday() # 获取当前星期的索引
列表遍历
语法:for i in list_name
使用for循环与enumerate()函数实现同时输出索引与元素内容
语法:for index,i in enumerate(list_name) # index索引号 i 列表元素
添加元素
List_name.append(element) # append()该方法向列表末尾增加一个元素
修改元素
语法:通过索引为元素赋值(修改)
例:
List_name = [2,3,5,1,8]
List_name[1] = 500
>> List_name = [2,500,5,1,8]
删除元素
根据索引删除语法:
例:
List_name = [2,3,5,1,8]
Del List_name[1]
根据元素值删除语法:
例:
List_name = [2,3,5,1,8]
List_name.remove(5)
列表统计与计算
列表List_name中value元素出现的次数
语法:List_name.count(value)
列表List_name中value元素首次出现的位置
语法:List_name.index(value)
数值列表元素和
语法:sun(list_name[,start])
list_name:需要统计的列表名称
start:表示统计结果是从哪个数开始
列表排序
sort()
List_name.sort(key=None,reverse=False)
Key:指定从每个元素中提取一个用于比较的键,(key=str.lower 排序时不分大小写)
Reverse: reverse=False(升序排列) revers=True(降序排列)
中文内容排序
Sorted(list_name,key=None,reverse=False)
列表推导式
生成指定范围的数值列表
语法:List_name = [Expression for I in range]
Expression:用于计算生成新列表的元素
Range:随机数
例:
Import random
List_name = [random.randint(1,10) for I in range(5)] #生成一个5个元素的列表 元素范围[1-10]
在原列表基础上生成一个新列表
语法:New_list_name = [Expresion for I in list_name]
例:
List_name = [121,321,231,142,124]
New_list_name = [int(I * 0.5) for I in List_name]
将原列表中的元素提取出来组成一个新的列表
语法: new_list_name = [Expresion for I in list_name if condition]
例:
List_name = [121,321,231,142,124]
New_list_name = [int(I * 0.5) for I in list_name if I >200]
列表嵌套
arr = []
for i in range(4):
arr.append([])
for j in range(5):
arr[i].append(j)
print(arr)
>>[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
arr = []
for i in range(4):
arr.append(list(range(0,5)))
print(arr)
>>[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
使用推导式创建
Arr = [[j for j in range(5)] for I in range(4)]
元组
与列表相似,按照特定顺序排列的元素组成,不可变
异同点:元组不可变,列表可变。元组元素不可单独修改,列表元素可单独修改
使用赋值运算符“=”创建元组:tuple_name = (value1,value2,……)
创建数值元组
语法:tuple(range(1,100,2))
删除元组
语法:del tuple_name
访问元组元素
print(tuple_name[:]) #[]里面是索引,前开区间,后闭区间
遍历元组
语法:for I in tuple_name
例:
cofe = ("苹果","橘子","草黑")
for i in cofe:
print(i + "咖啡",end = " ")
例:
number = ("一","二","三","四","五","六","七","八")
for index,i in enumerate(number):
if index%2 == 0:
print(i + "\t\t",end="") #end="" 不换行符
else:
print(i + "\n") #换行
修改元组元素
由于元组是不可变的序列,所以不能单独修改,只能整体修改,即对元组重新赋值
语法:
Tuple_name = (value1,value2,……)
Tuple_name = (……)
元组之间可相加
语法:Tuple_name = Tuple_name1 + Tuple_name2
进行元组相加时,如果存在元组只有一个元素,那么该元组元素后面必须加一个“,”号
元组推导式
例:
import random
randomnumber = (random.randint(1,10) for i in range(10)) #生成器对象
randomnumber = tuple(randomnumber) #转化为元组
字典
字典是无序的可变序列,内容以键值对形式存在。字典中的键唯一且不可变。
创建字典
语法:dict_name = {“key1”:”value1”, “key2”:”value2”,……}
创建空字典:
语法:
dict_name = {}
dict_name = dict()
通过映射函数创建字典(将多个列表或元组组合转化为字典)
语法:dict_name = dict(zip(list_1,list_2))
zip():将多个列表或元组对应位置的元素组合为元组,并返回这些内容的zip对象。如果想获取元组,可以将zip对象使用tuple()函数转化这些元组;如果想获取列表,可以将zip对象使用list()函数转化为列表
例:
a = [1,2,3,4,5]
b = [11,22,33,44,55]
c = tuple(zip(a,b))
d = list(zip(a,b))
e = dict(zip(a,b))
删除字典
删除字典:
del dict_name
删除字典中的元素:
dict_name.clear()
删除字典对象:
dict_name.pop() #指定键
访问字典
语法:dict_name[ ] #输入键,返回值,如果键不存在会报错
语法:dict_name[“key”] if “key” in dict_name else “该键key不存在” #避免报错
语法:dict_name.get(“key”)
遍历字典
全部遍历:for item in dict_name.items(): #返回的是元组
区分遍历:for key,value in dict_name.items():
编辑字典
添加键值对:dict_name[key] = value
删除键值对:del dict_name[key] #键不存在时会报错,需要添加if判断
If key in dict_name():
del dict_name[key]
字典推导式
语法:dict_name = {i:random.randint(10,100) for I in range(1,5)}
无序可变集合set {}
创建集合:
语法:
set_name = (element1, element2, element3,……)
set_name = set(iteration) #将列表、元组等转化为集合,如果是字符串,元素不重复
添加元素:
set_name.add(element)
删除元素
语法
del删除整个集合:del set_name()
删除指定元素:set_name.remove()
删除第一个元素:set_name.pop()
集合运算符:交集& 并集| 差集-
列表、元组、字典、集合异同点
数据结构 | 是否可变 | 是否重复 | 是否有序 |定义符号
-------- | -----| -----| -----| -----| -----
列表list|√|√ |√ |[]
元组tuple | ×| √ | √ |()
字典dict| √ | √ | ×|{key:value}
集合{}|√| ×|× |{}