Python中元组、集合、字典的描述

#######元组、集合、字典#######

##is与== 的区别

变量:
    id: 在内存中存储的位置;id(a)
    value: ==
    type:变量的数据类型; type(a)
==: value, type
is: 三个都判断


** a is b ====> True, a==b一定相等, 返回True;
** a==b ====> True, a is b 不一定;

##深拷贝与浅拷贝

-# 直接赋值(li1 = li): 只传递对象的引用, li1指向对象li的内存地址空间,
    因此, 原有列表li改变, 被赋值的li1也会做相应的改变.

# 浅拷贝(三种实现方式 eg: li2=li.copy()):li和li2的内存地址不同,
    但是子对象的内存地址相同, 因此,原始数据改变 , 子对象也改变.

#  深拷贝(import copy, eg: li3=copy.deepcopy(li)), li和li3的内存地址不同,
     包含子对象的拷贝, 所以原始对象改变并不会造成深拷贝里面任何子项的改变.

注意:

         当深拷贝和浅拷贝, 针对的对象全部是不可变数据类型时, 两者效果相同;
         当深拷贝和浅拷贝, 针对的对象包含是可变数据类型时, 两者才有上述区别;

         所有的数值类型布尔类型, str是不可变数据类型,
         list是可变数据类型;

 

##元组的创建与特性及其常用方法

#元组

我们对于元组可以通俗的定义为带了紧箍咒的列表,是不可变数据类型,没有增删改查,可以存储任意数据类型

如果元组里面包含可变数据类型, 可以间接修改元组内容;
t = ([1,2,3], 4)
t[0].append(4)
print(t)

t2 = ( )
t3 = tuple([ ])
元组如果只有一个元素, 后面一定要加逗号, 否则数据类型不确定;
t4 = ('hello')
t5 = ('hello',)
print(type(t2), type(t3), type(t4), type(t5))

#元组的特性

# 索引, 切片, 重复, 连接, 成员操作符

# for循环

# for循环并且求索引(枚举)

# zip: 集和用户名和密码两个元组, 元素之间一一对应

# 元组的常用方法

# 元组的应用场景

#变量交换数值:
a = 1
b = 2

b,a = a,b

print(a,b)
我们可以理解为:先把(a,b)封装成一个元组, (1,2),b,a = a,b ======> b,a =(1,2),b = (1,2)[0], a=(1,2)[1]

# 元组的赋值: 有多少个元素, 就用多少个变量接收

# 元组的排序

##集合的定义、特性及常用方法

# 集合定义

# 集合里面的元素是不可重复的;
s = {1, 2, 3, 4, 1, 2, 3}
print(s, type(s))

s1 = {1}
print(s1, type(s1))

# 如何定义一个空集合?
s2 = {}                         # 默认情况是dict, 称为字典
print(s2, type(s2))

# 定义一个空集合.
s3 = set([])
print(s3, type(s3))

# 集合应用1: 列表去重
li = [1,2,3,1,2,3]
print(list(set(li)))

# 集合的特性

# 索引, 切片, 重复, 连接, 成员操作符
# 集合支持的特性只有 成员操作符, 索引, 切片, 重复, 连接,均不支持;

# for循环

# for+ index

# 集合的常用方法

 可变, 无序数据类型, 添加的顺序, 和在集合中存储的顺序不同

# 增加(add),增加多个元素(update)

# 删除(pop),删除指定元素(remove)

# 交集(union), 并集(intersection),差集(difference),对等差分(symmetric_difference)

##字典的特性及其常用方法

#字典的定义

字典的key值对应value值,例如:

users = ['user1', 'user2']
passwds = ['123', '456']

userinfo = dict(zip(users, passwds))
userinfo
{'user1': '123', 'user2': '456'}
    - 定义空字典, {}, dict()
    - 赋值: d = {'key':'value', 'key1':'value1'}

举例:

        随机生成100张卡号, 卡号的格式为610 334455 001 ---610 334455 100,默认初始密码为666666

# fromkeys第一个参数可以将list/tuple/str/set的每一个元素作为字典的key值,
#  并且所有key的value值一致, 都为'666666';

  

# 字典的特性

# 索引, 切片, 重复, 连接, 成员操作符

字典是不可索引,切片,重复,链接的,但可以使用成员操作符

# for循环: 默认遍历字典的key值;

# 字典的增加

#添加或者更改key-value对

# update

   如果key值已经存在, 更新value值;
   如果key值不存在, 添加key-value值;

# setdefault
          如果key值已经存在, 不做修改;
          如果key值不存在, 添加key-value值;默认情况下value值为None

# 字典的删除

# pop:弹出指定key-value值

# popitem()弹出最后一组key-value值

# del d['a'] 删除无法记录返回值

# d.clear() 清空

# 列表通过字典去重


# 通过字典的方式去重
# ** 字典的key值是不能重复的.
# d = {'a':1, 'b':2}
# d['a'] = 3
li = [1, 2, 3, 4, 65, 1, 2, 3]
print({}.fromkeys(li).keys())

#字典的查看与修改

# 查看字典里面所有的key值
print(services.keys())

# 查看字典里面所有的value值
print(services.values())

# 查看字典里面所有的key-value值
print(services.items())

# 遍历

# get方法获取指定可以对应的value值
  如果key值存在, 返回对应的value值;
  如果key值不存在, 默认返回None, 如果需要指定返回的值, 传值即可;

#####################################

猜你喜欢

转载自blog.csdn.net/houzeyu666/article/details/81698143