【python】列表, 元组, 集合以及字典的常见用法
python 列表, 元组, 集合以及字典的常见用法
文章目录
- python 列表, 元组, 集合以及字典的常见用法
-
- 列表操作
-
- 嵌套列表操作
- 元组操作
- 集合操作
- 字典操作
- 附加
-
- lambda表达式
- reduce函数
列表操作
-
列表是python常见的数据类型, 使用
[]
括起来, 类似于其他语言的数组类型, 其中list
为python关键字 -
根据索引访问 (注意索引是以0开始); 比如:
list[0]
-
遍历输出列表: 使用
for..in
循环lis1 = [2, 3, 'k','ab', 'adv']for i in lis1: print(i)
或者
lis1 = [2, 3, 'k','ab', 'adv']for i in range(len(lis1)): print(lis1[i])
-
len(list)
: 统计列表长度的方法 -
list.append(obj)
: 往列表添加元素 -
list.copy()
: 复制列表 -
list.clear()
: 清空列表 -
list.reverse()
: 反向排列表中的元素 -
list.extend(seq)
:在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) -
list.sort( key=None, reverse=False)
: 对原列表进行排序 -
list.remove(obj)]
: 移除列表中某个值的第一个匹配项 -
list.pop([index=-1])
: 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 -
list(seq)
:元组转换为列表 -
list.count(obj)
: 统计某个元素在列表中出现的次数 -
list.index(obj)
: 从列表中找出某个值第一个匹配项的索引位置 -
list.insert(index, obj)
: 将对象插入列表 -
list.pop([index=-1])
: 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
嵌套列表操作
-
嵌套列表是指列表中有列表, 他们之间相互嵌套
-
比如 :
[2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']
-
访问多层嵌套列表, 更多维数组一样, 比如:
lis[1][5]
-
遍历输出嵌套列表:
- 使用简单的
for..in
循环, 你会发现只能访问到第一层列表的内容, 列表中的列表将会以列表的形式出现, 而不是单个元素出现
lis1 = [2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']# 循环遍历输出嵌套列表# 使用递归def bianli(li): for i in range(len(li)): if isinstance(li[i],list): bianli(li[i]) else: print(li[i])bianli(lis1)
- 使用简单的
-
修改嵌套列表中的值
lis1 = [2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']print(lis1)# 修改嵌套列表中的值def traverse(li, str1, str2): # 第一个参数传列表, 第二个参数传列表中要替换的字符串, 第三个参数传更改后的字符串 for i in range(len(li)): if isinstance(li[i], list): # 判断是否为列表 traverse(li[i], str1, str2) # 递归调用 elif li[i] == str1: li[i] = str2traverse(lis1,3,"三") # 将列表中含有3的值修改为三print(lis1)
元组操作
-
元组与列表相似, 但元组是不能修改的, 使用
()
括起来, 其中tuple
为关键字 -
访问元组: 使用
元组名[]
是形式访问tup = ("123",123)print(tup[0])
-
元组的值是不能修改和删除的, 但可以进行连接组合
tup1 = ("123",123)tup2 = (1,2,3)tup = tup1+tup2print(tup)
-
删除元组 :
del 元祖名
-
tuple(iterable)
将可迭代系列转换为元组。lis = [1,2,3,4,5]tup = tuple(lis)print(tup)
集合操作
- 集合(set)是一个无序的不重复元素序列。其中
set
为关键字 - 创建集合的方式:
- 第一种 : 直接大括号
{}
创建集合, 大括号内必须有值来初始化集合; 注意:创建一个空集合必须用 set() 方法而不是 { },因为 { } 是用来创建一个空字典。 - 第二种 :
set()
方法创建集合
- 第一种 : 直接大括号
fruit1 = {"apple", "banana","orange"}fruit2 = set() # 创建空集合fruit2.add("apple") # 往集合添加元素print(fruit1)print(fruit2)
-
判断元素是否在集合内 :
v in s
, 返回布尔值fruit1 = {"apple", "banana","orange"}print("apple" in fruit1)
-
union()
: 返回两个集合的并集set.union(set1, set2...)
set1 = {1,2,3,4}set2 = {3,4,5,6}set3 = set1.union(set2)print(set3)
-
求差集:
set.difference(set)
x = {"apple", "banana", "cherry"}y = {"google", "microsoft", "apple"} z = x.difference(y)
-
求交集 :
set.intersection(set1, set2 ... etc)
x = {"apple", "banana", "cherry"}y = {"google", "runoob", "apple"}z = x.intersection(y) print(z)
-
添加元素 :
add()
-
删除元素 :
remove()
-
随机删除元素 :
pop()
fruit1 = {"apple", "banana","orange"}fruit1.add("pear")fruit1.remove("apple")fruit1.pop()print(fruit1)
字典操作
-
字典是另一种可变容器模型,且可存储任意类型对象。其中
dict
为python的关键字 -
使用
{}
括起来, 和集合不同的是, 字典需要键值对形成一对元素- 键值对 :
key : value
- 键值对 :
-
创建字典 :
dic = {} # 创建空字典print(type(dic)) # 输出类型dic2 = {"name" : "张三", "age":100,"height":120}print(dic2)
输出 :
{'name': '张三', 'age': 100, 'height': 120}
-
修改字典, 通过拿到key来修改value, 若没有对应的key则会自动新增一项
dic2 = {"name" : "张三", "age":100,"height":120}dic2["age"] = 18dic2["sex"] = "男" # 新增一项, 即添加性别项print(dic2)
-
删除字典元素或清空字典
- 删除一个字典 :
del 字典名
- 清空字典 :
字典名.clear()
- 删除一个字典 :
-
字典键的唯一性: 不允许同一个键(key)出现两次, 值(value)可以重复, 键(key)不能重复
- 键必须不可变,所以可以用数字,字符串或元组充当(因为他们都不可变),而用列表就不行, 因为列表是可变的
-
字典复制 :
dict.copy()
-
dict.keys()
: 返回所有键的集合 -
dict.value()
: 返回所有值的集合 -
dict.items()
: 返回所有键值对的合集
dic = {"及时雨":"宋江","易大师":"剑圣","维恩":"暗影猎手",1:1,2:1}print(dic.keys())#拿到所有的key,返回key的集合.像是列表.但不是列表print(dic.values()) # 拿到所有的value,返回value的合集print(dic.items()) # 拿到所有键值对
- 查找键对应的值 :
dict.get(key)
- 删除对应的键值对 :
dict.pop(key)
dic = {"及时雨":"宋江","易大师":"剑圣","维恩":"暗影猎手"}print(dic.get("及时雨")) # 通过key拿到value值dic.pop("维恩") # 删除对应的键值对, pop里面的参数只能是key, 不能是valueprint(dic)
-
遍历字典
dic = {1:'a',2:'b',3:'c'}# 遍历输出键for k in dic.keys(): print(k)# 遍历输出值for v in dic.values(): print(v)# 遍历输出键或者值for k,v in dic.items():#只有键值对才能解包,解构 print(k,v)#打印key print(dic[k])#打印vaule# 或者for item in dic.items(): print(item) # 以元组形式输出键值对 print(item[0]) #打印key print(item[1]) #打印vaule
-
嵌套字典
dic = { "name ":"张三", "age": 29, "wife": {"name": "王六", "salay": 18000, "age" : 27 }, "children":[ {"name":"老大","age":6}, {"name":"老二","age":3} ]}print(dic)print(dic["children"][1]["age"])#找出二儿子的年龄print(dic["wife"]["salay"])
附加
lambda表达式
- 匿名函数(顾名思义就是没有名字的函数), 使用
lambda
创建匿名函数 lambda
的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。- 表达式用法 :
lambda 参数 : 执行方法
# 使用匿名函数来求和sum1 = lambda a, b : a+bprint(sum1(1,2))# 将匿名函数封装在一个函数内def sum2(): return lambda a,b:a+bc = sum2()print(c(1,2))
reduce函数
- reduce() 函数会对参数序列中元素进行累积。
- 语法 :
reduce(function, iterable[, initializer])
function
– 函数名iterable
– 可迭代对象initializer
– 可选,初始参数
- 举个例子: 累乘操作
from functools import reduce# 计算累乘def factorial(m, n): return m*nmult1 = reduce(factorial, [1,2,3,4,5])print(mult1)# 使用匿名函数mult2 = reduce(lambda m,n:m*n,[1,2,3,4,5])print(mult2)
- reduce方法是对元素进行累积操作, 对上述的例子就是在1和2做乘积的结果上再与3相乘, 与此类推, 最后把列表中的数都运算完
注意 : Python3以上的reduce() 已经被移到 functools 模块里,如果要使用,必须引入 functools 模块来调用 reduce() 函数: