Python 集合数据的方法总结

🌱Python集合数据类型

Python 编程语言中四种集合数据类型:

  • 列表(List):是一种有序和可更改的结合。允许重复的成员。用“[]编写。
  • 元组(Tuple):是一种有序且不可更改的集合。允许重复的成员。用"()"编写。
  • 集合(Set):是一种无序和无索引的集合。没有重复的成员。用"{}"编写。
  • 词典(Dictionary):是一个无序,可变和有索引的集合。没有重复的成员。用"{}"编写,拥有"键值对"。

Tips:为特定数据集选择正确的类型可能意味着保留含义,并且可能意味着提高效率或安全性。

🌱数据集合示例

# 列表
list = ["apple", "banana", "cherry"]
# 元组
stuple = ("apple", "banana", "cherry")
# 集合
set = {"apple", "banana", "cherry"}
# 词典
dict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}

🌱方法分类

根据集合数据类型的特性将方法分类

修改(增、减、换)

# 所有示例代码皆以上面数据集合示例为基础
titel1 = "新增元素(成员):"
# ------列表--------------------------------------------
list = ["apple", "banana", "cherry"]
list.append(element)
# 列表方法:在列表的末尾添加一个元素
# 参数:element,必需!任何类型(字符串、数字、对象等)的元素。
list = ["apple", "banana", "cherry"]
list.insert(position, element)
# 列表方法:在指定位置添加元素
# 参数:position,必需!数字,指定在哪个位置添加。
#      element,必需!任何类型(字符串、数字、对象等)的元素。
# 
list.extend(iterable)
# extend() 方法将指定的列表元素(或任何可迭代的元素)添加到当前列表的末尾
# iterable:可迭代对象
# ------元组--------------------------------------------
mark = "元组不可直接修改!"
# 可通过其他方法修改,比如转为列表,修改之后再转为元组
# ------集合--------------------------------------------
set = {"apple", "banana", "cherry"}
set.add(element)
# 集合方法:向集合添加元素,元素无序,添加的元素不能确定位置。
# 参数:必需,要添加到集合的元素。如果集合中有元素,则不添加。
set.update(element)
# 向集合中添加多个元素,element可以是列表、元组、集合(字典的话,只会添加“键”,需要做预处理)
# ------字典--------------------------------------------
dict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
dict["color"] = "red"
# 字典方法:添加项目
# 备注:如果是字典内已存在的键,则是修改!
# 所有示例代码皆以上面数据集合示例为基础
title2 = "减少元素(成员)"
# ------列表--------------------------------------------
list = ["apple", "banana", "cherry"]
list.remove("apple")
# 删除指定项目
list.pop()
# 方法,删除索引项目(如果未指定索引,则删除最后一项)
del list[0]
# del 关键字删除索引项目
del list
# del 关键字删除完成列表
list.clear()
# 方法,清空列表。使列表成为空列表
# ------元组--------------------------------------------
mark = "元组不可直接修改!"
# 可通过其他方法修改,比如转为列表,修改之后再转为元组
# ------集合--------------------------------------------
set.remove(element)
# 删除指定的元素,如果元素不存在,则remove()将引发错误。
set.discard(element)
# 删除指定的元素,如果元素不存在,discard()不会引发错误。
set.pop()
# pop()方法删除最后一个元素,因集合是无序的,因此此方法不知道删除的元素是哪个。
set.clear()
# 方法,清空集合。使列表成为空集合
del set
# 关键字,del 删除整个集合
# ------字典--------------------------------------------
dict.pop(key)
# 根据键,删除值
dict.popitem()
# 删除最后插入的项目(3.7之前的版本中,删除随机项目)
del dict[key]
# del 关键字删除指定键的项目
del dict
# del 关键字删除完整的字典
dict.clear()
# 方法,清空字典。使列表成为空集合
# 所有示例代码皆以上面数据集合示例为基础
title2 = "修改元素(成员)"
# ------列表--------------------------------------------
list[0] = "mango"
# 修改列表指定索引的元素,相当于是重新赋值
# ------元组--------------------------------------------
mark = "元组不可直接修改!"
# 可通过其他方法修改,比如转为列表,修改之后再转为元组
# ------集合--------------------------------------------
mark = "集合无索引,所以不能直接修改集合的元素"
# 方法一:将集合转为列表,修改之后,再转为集合
# 方法二:删除需要修改的元素,新增修改后的元素
# ------字典--------------------------------------------
dict[key] = value
# 修改对应Key的value

查找(索引)

# 所有示例代码皆以上面数据集合示例为基础
title2 = "查找元素(成员)"
# ------列表--------------------------------------------
# 列表是有序的,所有可以通过元素的位置找到元素,并对其进行操作
# 元素位置始终是以0开始计算,即第一个元素的位置为0
list = ["apple", "banana", "cherry"]
list[0]的元素为:"apple"
# 负的索引:索引位置从最后一个开始,即-1为最后一个,-2为倒数第二个
list[-1]的元素为"cherry"
# 索引范围:使用范围索引,返回的值为范围内的元素组成的新列表
list[0:2]
# 注释:list[0:2],索引从0开始(包含),到2结束(不包含)
# 负的索引范围:同样返回的内容为列表,下例中,从倒数第4位(包含)到最后一个(不包含)
list[-4:-1]

# ------元组--------------------------------------------
mark = "元组索引和列表相同,不在赘述。"
# ------集合--------------------------------------------
# 集合无序无索引,但是能用len()方法获取集合内元素的数量
# ------字典--------------------------------------------
# 根据键获取值
dict[key]
# 还可以使用get()方法,也是一样的结果
dict.get(key)
# 字典同样可以使用len()方法,返回为key的数量

创建副本(复制)

# 所有示例代码皆以上面数据集合示例为基础
title2 = "复制数据"
# ------通用--------------------------------------------
"复制列表"
# 通过键入 list2 = list1 来复制列表,
# 因为:list2 将只是对 list1 的引用,list1 中所做的更改也将自动在 list2 中进行。
list1 = list2
# ---
list_name.copy()
# 元组没有复制方法
# 副本与原本之间的关系分析(利于更好的理解和使用副本):
# 1.原本修改后再创建副本,则副本内容为修改后的内容
# 2.副本创建后修改原本,副本内容为未修改前的原本内容
# 3.创建副本后修改副本内容,不影响原本内容。
# 4.Python代码执行是从上往下,所以内容取决于代码的先后顺序
"字典复制"
"字典复制不能通过 dict2 = dict1 进行复制"
"因为:dict2 只是对 dict1 的引用,而 dict1 中的更改也将自动在 dict2 中进行。"
"可通过 copy()和dict()方法进行复制"
# ------分割线------------------------------------------
title3 = "遍历"
for x in list_name:
    pass
# 元组和集合和列表相同
mark = "字典用for遍历只能遍历字典的 键 "
# 可以用
for x in dict_name.values():
    pass
# 返回字典的值
mark = "遍历字典的键值对,请使用items()函数"
for x,y in dict.items():
    pass
"遍历字典中的值"
foe x in dict.valuse():
	pass
# ------分割线------------------------------------------
title4 = "检查项目(元素)是否存在"
if value in list_name:
    pass
# 元组、集合和列表相同
# 字典用此方法检查key是否存在

其他

# 所有示例代码皆以上面数据集合示例为基础
title2 = "获取长度(元素数量)"
# ------通用--------------------------------------------
len(list_name)
len(tuple_name)
len(set_name)
len(dict_name)
mark = "返回的数字用法和意义稍微有点差异"
listlen = "列表、元组、字典返回的是元素的数量"
dictlen = "字典返回的是key的数量"
mark = "返回的数字可用作其他用法,看具体的数据类型。"
# 返回结果为int型数据

🌱数据嵌套

集合数据之间可以相互嵌套。

# 列表嵌套
list_name = ["a",[1,2],(1,2),{1,2},{"key":"value"}]
# 本例,列表嵌套了列表、元组、集合和字典元素,其他嵌套方式类似。
# 需要注意的是索引时的定位,如:
list_name[1] = [1,2]
list_name[1][1] = 2
# 索引方式和NumPy库多维数组略有差异,请注意。

🌱特定方法(针对集合数据的类型的特定方法)

列表/元组

# 列表/元组方法
# 获取指定值在列表/元组中出现的次数。
list_name.count(element)
# 获取指定值在列表/元组中首次出现的位置
list_name.index(element)
# 列表方法
list_name.reverse()
"翻转列表的排序方式"
list_name.sort()
"默认情况下,sort()方法对列表进行升序排序,当然还可以让函数来决定排序标准。"

"示例1:对列表进行降序排序"
cars = ['Porsche', 'BMW', 'Volvo']
cars.sort(reverse=True)
"结果为:['Volvo', 'Porsche', 'BMW'] "
"备注:汉字排序是根据unicode数值进行排序的"

"示例2:按照字符串长度对列表进行排序"
# 返回值的长度的函数:
def myFunc(e):
  return len(e)

cars = ['Porsche', 'Audi', 'BMW', 'Volvo']

cars.sort(key=myFunc)

"示例3:根据字典的 'year' 值对字典列表进行排序"
# 返回 'year' 值的函数:
def myFunc(e):
  return e['year']

cars = [
  {'car': 'Porsche', 'year': 1963},
  {'car': 'Audi', 'year': 2010},
  {'car': 'BMW', 'year': 2019},
  {'car': 'Volvo', 'year': 2013}
]

cars.sort(key=myFunc)

"按照值的长度对列表进行降序排序"
# 返回值的长度的函数:
def myFunc(e):
  return len(e)

cars = ['Porsche', 'Audi', 'BMW', 'Volvo']

cars.sort(reverse=True, key=myFunc)

集合

# 返回差集:返回一个集合,其中包含仅存在于集合 x 中而不存在于集合 y 中的项目。
# 返回的集合包含仅在第一个集合中存在的项目,而同时不存在于两个集合中
# 示例:
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.difference(y) 

print(z)
# 结果:
{'cherry', 'banana'}

# 删除交集,返回删除交集后的集合
# 示例:
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

x.difference_update(y) 

print(x)
'''difference_update() 方法与 difference() 方法不同,
因为 difference() 方法返回一个新集合,其中没有不需要的项目,
而 difference_update() 方法从原始集中删除了不需要的项目。'''

# 返回交集
# 示例:
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.intersection(y) 

print(z)
# 结果:
{"apple"}
# 删除非交集内容,返回交集内容
# 示例
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

x.intersection_update(y) 

print(x)
'''
intersection  返回的是新的交集
intersection_update  则是在原来的集合上做删除处理
'''

# 检查set1中的项目是否 都不存在于 set2中
set1.isdisjoint(set2)
# 返回结果为:True或Flase

# 检查set1中的项目 是否都包含 在set2中
set1.issubset(set2)
# 返回结果为:True或Flase

# 检查set2中的项目 是否都包含 在set1中
set1.issuperset(set2)


# 返回差集(新集合)
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.symmetric_difference(y) 

print(z)
# 结果为:
{'google', 'microsoft', 'banana', 'cherry'}

# 返回差集(修改第一个set)
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

x.symmetric_difference_update(y) 

print(x)

# 返回并集:返回包含两个集合中所有项目的集合,重复的只出现一次
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.union(y) 

print(z)

字典

字典方法上面已列出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值