python7 元组集合字典

python7 元组集合字典

元组

列表:list —> []
元组:tuple —> ()
作用就是:类似列表,也可以存放多个元素

tuple1 = (1, 2, 3, 4, 5, 6)
print(tuple1)  # (1, 2, 3, 4, 5, 6)

tuple2 = (1,)
print(tuple2)  # (1,)

# 使用下标
print(tuple1[1])  # 2
print(tuple1[3])  # 4

# 切片操作
print(tuple1[:3])  # (1, 2, 3)
print(tuple1[::-1])  # (6, 5, 4, 3, 2, 1)

# 遍历  支持在for...in 遍历打印
for i in tuple1:
    print(i)
'''
1
2
3
4
5
6
'''

# 支持 in, not in
if 5 in tuple1:
    print('存在')
else:
    print('不存在')
# 存在

# 进行增删改查

tuple1 += (7,)
print(tuple1)  # (1, 2, 3, 4, 5, 6, 7)

# 元组不能删除
# del tuple1[6]  # TypeError: 'tuple' object doesn't support item deletion

# 元组不能修改
# tuple1[2] = 100  # TypeError: 'tuple' object does not support item assignment

n = tuple1.index(3)  # 返回要查询的元素的位置
print(n)  # 2
# 要查询的元素没有找到则报错 ValueError: tuple.index(x): x not in tuple

print(tuple1.count(4))  # 1
print(len(tuple1))  # 7
print(max(tuple1))  # 7
print(min(tuple1))  # 1

tuple1 = (4, 1, 3, 8, 0, 6)

result = sorted(tuple1)  # l = list(tuple1)  ---> l.sort() --->result
print(result)  # [0, 1, 3, 4, 6, 8]

# 使用类型转换
# 元组与列表是可以相互转换的
tuple1 = tuple(result)
print(type(tuple1))  # <class 'tuple'>
print(tuple1)  # (0, 1, 3, 4, 6, 8)

s = str(tuple1)
print(type(s))  # <class 'str'>
print(s)  # (0, 1, 3, 4, 6, 8)

l = list(tuple1)
print(type(l))  # <class 'list'>
print(l)  # [0, 1, 3, 4, 6, 8]

集合

  • tuple,list:有序 —> index
    允许重复元素
  • set: 无序 没有下标
    不重复

声明:

  • set1 = {1, 3, 5, 8}
  • set1 = set() 空集合
  • 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

集合遍历:for i in 集合:
支持:in not in 进行判断

# 定义 set() {}
set1 = {1, 3, 5, 8, 5, 1, 5, 1}
print(type(set1))  # <class 'set'>
print(set1)  # {8, 1, 3, 5}

# 空集合的声明
set2 = set()
print(type(set2))  # <class 'set'>
print(len(set2))  # 0
print(set2)  # set()

print(set1[0])  # TypeError: 'set' object does not support indexing
for i in set1:
    print(i)
'''
8
1
3
5
'''

if 5 in set1:
    print('存在')
# 存在

# 列表去重
import random

list1 = []
for i in range(15):
    ran = random.randint(1, 10)
    list1.append(ran)

print(list1)  # [10, 5, 6, 9, 6, 6, 9, 7, 7, 4, 1, 3, 10, 9, 4]
set1 = set(list1)
print(set1)  # {1, 3, 4, 5, 6, 7, 9, 10}
list1 = list(set1)
print(list1)  # [1, 3, 4, 5, 6, 7, 9, 10]

增删改查

  • 添加:
    • add()
      一个一个添加
    • update()
      update(tuple|list)
  • 删除:
    • remove(要删除元素)
      如果要删除的元素不存在则报错
    • discard(要删除元素) 丢弃
      如果要删除的元素不存在不报错
    • pop()
# 增加
set1 = set()
set1.add('张三')
set1.add('李四')
set1.add('王五')
set1.add('张三')
print(set1)  # {'张三', '王五', '李四'}

tuple1 = ('刘德华', '张学友', '王五')

set1.add(tuple1)
print(set1)  # {('刘德华', '张学友', '王五'), '张三', '王五', '李四'}

set1.update(tuple1)  # 类似:# list2.extend(list1)
print(set1)  # {'张学友', '刘德华', ('刘德华', '张学友', '王五'), '张三', '王五', '李四'}

# 删除
set1.remove('张三')
print(set1)  # {'张学友', '刘德华', ('刘德华', '张学友', '王五'), '王五', '李四'}

set1.discard('李四')
print(set1)  # {'张学友', '刘德华', ('刘德华', '张学友', '王五'), '王五'}

set1.pop()
print(set1)  # {'刘德华', ('刘德华', '张学友', '王五'), '王五'}

两个集合

  • 交集:& set1 & set2 —> 共同存在元素
  • 并集:| set1 | set2
  • 差集:- set1 - set2 —> 找set1与set2不一样的元素
  • 对称差集:^ set1 ^ set2
names1 = {'lucy', 'jack', 'steven', 'admin'}
names2 = {'lucy', 'steven', 'lily'}

# 交集
result = names1 & names2
print(result)  # {'steven', 'lucy'}

result = names1.intersection(names2)
print(result)  # {'steven', 'lucy'}

# 并集
result = names1 | names2
print(result)  # {'admin', 'lily', 'steven', 'jack', 'lucy'}

result = names1.union(names2)
print(result)  # {'admin', 'lily', 'steven', 'jack', 'lucy'}

# 差集
result = names1 - names2
print(result)  # {'admin', 'jack'}

result = names2.difference(names1)
print(result)  # {'lily'}

# 对称差集 ^
result = names1 ^ names2
print(result)  # {'jack', 'admin', 'lily'}

result = names1.symmetric_difference(names2)
print(result)  # {'jack', 'admin', 'lily'}

# 子集
print({8, 6, 3} > {8, 6})  # True
print({8, 5} < {8, 6, 3})  # False

字典

格式:

  1. dict1={}
  2. dict2={key:value,key:value,key:value}

特点:

  1. key必须是唯一的
  2. value可重复
  3. 键值对

set1={1,2,3,5,7}
dict1 = {1:‘aa’,2:‘ab’}

dict1 = {}
print(type(dict1))  # <class 'dict'>

dict2 = {'001': '张三', '002': '李四'}
print(type(dict2))  # <class 'dict'>

print(len(dict2))  # 2

dict3 = {'001': '张三', '002': '李四', '003': '张三'}

print(dict3)  # {'001': '张三', '002': '李四', '003': '张三'}

dict4 = {1: 'aaa', 2: 'bbb', 3: 'ccc'}
print(dict4)  # {1: 'aaa', 2: 'bbb', 3: 'ccc'}

# key不能是列表
dict5 = {[1, 2, 3]: 'abc', [1, 2, 3]: 'abcd'}  # TypeError: unhashable type: 'list'

增删改查

  • 增加元素:
    字典[key]=value
    注意: 添加的时候主要 是判断是否存在此key,
    如果字典中已经存在一个相同的key,则后面添加的value替换了原来的value。
    如果字典中不存在此key,则会添加到字典中。
  • 删除元素:
    • pop(key) —> 根据key删除字典中的键值对 类似: del dict[key]
    • popitem() —>
    • clear()
    • del dict[key]
  • 更新元素:
    字典只能更新value
persons = {}

persons['620001'] = '雄涛'
persons['620002'] = '宗鑫'
persons['620003'] = '宝坤'

print(len(persons))  # 3
print(persons)  # {'620001': '雄涛', '620002': '宗鑫', '620003': '宝坤'}

persons.pop('620003')
print(persons)  # {'620001': '雄涛', '620002': '宗鑫'}

# 更新
persons['620001'] = '建华'
print(persons)  # {'620001': '建华', '620002': '宗鑫'}

# 获取
value = persons.get('620002')
print(value)  # 宗鑫

# 合并
dict1 = {'620004': '武茏'}
persons.update(dict1)
print(persons)  # {'620001': '建华', '620002': '宗鑫', '620004': '武茏'}

# 添加
persons.setdefault('620005', '诗瑶')
persons.setdefault('620005', '诗瑶2')
print(persons)  # {'620001': '建华', '620002': '宗鑫', '620004': '武茏', '620005': '诗瑶'}

print(list(persons.keys()))  # ['620001', '620002', '620004', '620005']
print(list(persons.values()))  # ['建华', '宗鑫', '武茏', '诗瑶']
print(list(persons.items()))  # [('620001', '建华'), ('620002', '宗鑫'), ('620004', '武茏'), ('620005', '诗瑶')]
for id, name in persons.items():
    print(id, name)
'''
620001 建华
620002 宗鑫
620004 武茏
620005 诗瑶
'''

del persons['620001']
print(persons)  # {'620002': '宗鑫', '620004': '武茏', '620005': '诗瑶'}

persons.clear()
print(persons)  # {}

可变与不可变

  • 数据类型: str int float bool list tuple set dict
  • 可变和不可变:
    • 不可变:只要改变变量的值,如果变量的地址发生了改变,则认为是不可变 int,str,float,bool,tuple
    • 可变:变量的内部无论发生怎样的改变,地址都不发生改变,则认为是允许改变 list set dict
  • copy():类似备份
    备份的地址跟原空间的地址是不一样
list1 = [1, 2, 3]
print(id(list1))  # 4366699784
list1.remove(2)
print(id(list1))  # 4366699784

list2 = list1
print(id(list2))  # 4366699784

list2.append(6)
print(list1, list2)  # [1, 3, 6] [1, 3, 6]
print(id(list1), id(list2))  # 4366699784 4366699784

list1.remove(1)
print(list1, list2)  # [3, 6] [3, 6]
print(id(list1), id(list2))  # 4366699784 4366699784

del list1
print(list2)  # [3, 6]
print(id(list2))  # 4366699784

list1 = [1, 2, 3, 4, 5]
list2 = list1.copy()
print(id(list1), id(list2))  # 4562955528 4562955464
print(list1, list2)  # [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]

del list1
print(list2)  # [1, 2, 3, 4, 5]
print(id(list2))  # 4562955464
dict1 = {1: 'aa', 2: 'bb', 3: 'cc'}
dict2 = dict1.copy()
dict3 = dict1
print(id(dict1), id(dict2), id(dict3))  # 4414712064 4414712136 4414712064
print(dict1, dict2, dict3)  # {1: 'aa', 2: 'bb', 3: 'cc'} {1: 'aa', 2: 'bb', 3: 'cc'} {1: 'aa', 2: 'bb', 3: 'cc'}

del dict1
print(id(dict2), id(dict3))  # 4414712136 4414712064
print(dict2, dict3)  # {1: 'aa', 2: 'bb', 3: 'cc'} {1: 'aa', 2: 'bb', 3: 'cc'}
n = 8
print(id(n))  # 4308764832
n = 5
print(id(n))  # 4308764736

s = 'hello'
print(id(s))  # 4311136608
s = 'helloworld'
print(id(s))  # 4312845424

f = 9.9
print(id(f))  # 4310221496
f = 8.96
print(id(f))  # 4310221016

t = (1, 2, 3)
print(id(t))  # 4312778360
t = (1, 2, 3, 4)
print(id(t))  # 4312755080

list1 = [1, 2, 3, 4, 5]
print(id(list1))  # 4312632584
list1.append(8)
list1.append(9)
list1.append(7)
print(id(list1))  # 4312632584

set1 = {4, 5, 7, 8}
print(id(set1))  # 4311400520
set1.add(1)
set1.add(2)
set1.add(3)
print(id(set1))  # 4311400520

dict1 = {1: 'aa'}
print(id(dict1))  # 4311148800
dict1[2] = 'bb'
dict1[3] = 'cc'
print(id(dict1))  # 4311148800
dict1.pop(1)
print(id(dict1))  # 4311148800
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值