python 列表 元组 集合

列表

列表有什么用呢,比如说你要存储一个班级所有人的名字,不可能用一个变量去存吧,要想取出其中一个名字,哪不是麻烦了,为了解决这个问题列表来了------列表可以将几乎所有类型的元素都往里面怼,通过列表可以对数据实现最方便的存储、可以进行增、删、改、查操作。

#创建一个列表
list_1 = ['a','b','c',1,2,3]
#查
print(list_1[0])    # [0]这个代表是一个下标为0,要想取出列表里的元素要用下标来取,什么是下标--就是从0开始左到右
print(list_1[0:2])  # 取出来的值是从[0]开始到[2]----注意了:取左不取右到[2]只能取到[1]的值--这个也叫切片
print(list_1[-3:-1])  #这个倒过来从后面开始往回切---注意了:取左不取右 3 是取不到的
print(list_1[-3:])    #这样就有 3 了
print(list_1[1:6:2])   #这个 2 就是每隔开一个切一刀
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

print(list_1.index('b'))  #.index 返回相对应元素的下标
print(list_1.count('c'))   #.count 查看列表中有多少个 c
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

list_2 = ['a','b','1','2']
list_2.sort()      # .sort sort函数用ASCII码将列表进行排序----有数字和字符串一起时不支持
print(list_2)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

list_1.reverse()   # .reverse 反转列表中的元素
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

#增
list_1.append(4)       # .append增加元素--只能在列表的最后增加
list_1.insert(1,'20')  # .insert可以选择下标插入数据--- 1,‘20’ 1代表下标,20代表要插入的元素
list_1.extend(list_2)  # .extend把两个列表进行合并
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

#改
list_1[1] = 10    #把下标为1的值改为 10
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

#删
list_1.remove('a')   #删除列表中的元素 a
del list_1[1]        #删除和下标 1 对应的元素
list_1.pop()         #在没有输入下标的情况下只会删除最后一个元素
list_1.clear()       #清空列表
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

# .copy()  浅copy
list_01 = ['a','b',[1,2,3],'c','d']
list_02 = list_01.copy()   #.copy 只把第一层copy,这个叫浅copy
a1 = list_01[:]       #同样是个浅copy
a2 = list(list_1)     #同样是个浅copy
list_01[0] = 'A'     
list_01[2][1] = 5    #.copy 当列表为一个嵌套列表时,修改的list_01,list_02也会被修改
print(list_01)
print(list_02)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

#深copy -- 可以完全独立
import copy
list_10 = ['a','b',[1,2,3],'c','d']
list_11 = copy.deepcopy(list_10)
list_11[2][2] = 5     #修改列表中的列表
print(list_11)
print(list_10)

#输出的结果
a
['a', 'b']
[1, 2]
[1, 2, 3]
['b', 1, 3]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1
1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['1', '2', 'a', 'b']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[3, 2, 1, 'c', 'b', 'a']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[3, '20', 2, 1, 'c', 'b', 'a', 4, '1', '2', 'a', 'b']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[3, 10, 2, 1, 'c', 'b', 'a', 4, '1', '2', 'a', 'b']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['A', 'b', [1, 5, 3], 'c', 'd']
['a', 'b', [1, 5, 3], 'c', 'd']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['a', 'b', [1, 2, 5], 'c', 'd']
['a', 'b', [1, 2, 3], 'c', 'd']

元组

元组也是一种数据容器,使用小括号”()“表示,其使用场景与列表相似,这意味着能使用列表的地方,基本上都能使用元组,包括列表推导式,切片等操作,元组与列表的唯一区别是元组不可变
t = ("hello",66,-20,33,3.66,[10,20,30])
print(t[1:4])   #切片
print(t.count(66))
print(t.index(66))
"""
元组的拼接
"""
t1 = ("hello","world","python")
t2 = ([1,2],[3,4],[5,6,7,8])
print(t1+t2)   #('hello', 'world', 'python', [1, 2], [3, 4], [5, 6, 7, 8])
"""
元组方法
 len()   max()   min()
"""
a = (1,2,3,4)
print(max(a))   #看最大值
print(min(a))    #看最小值
print(len(a))    #看最大长度

#结果 
(66, -20, 33)
1
1
('hello', 'world', 'python', [1, 2], [3, 4], [5, 6, 7, 8])
4
1
4

字典

字典一种key - value 的数据类型,key必须是唯一的,key天生去重,key可以是任意不可变类型(元组/字符串/数字)---key为键,value为值,字典是无序的----因为字典是没有下标的,要用key来找对应的值 

a = {
     "姓名":"李刚",
     "年龄":18,
     (1,2,2):"123"
    }

#增
a['age'] = 18    #在没有 age 的情况下是增加一个 键值对

#改
a["年龄"] = 22    #修改  值

#删
del a['姓名']     #删除
a.pop((1,2,2))   #删除
#a.clear()       #{}  清空字典

#查
print(a.get("ae"))  #.get 查看对应的值,当当key不存在时,返回 None
print(a["age"])  #查看  age 的值,当key不存在时会报错
print(a)


#结果
None
18
{'年龄': 22, 'age': 18}
.fromkeys函数  .keys函数 .values函数 .items函数  .popitem函数  .update函数  .setdefault函数
inif = dict.fromkeys([1,2,3],[1,{'name':'dig'},100])  #.fromkeys 第一个列表为不同的键,第二个列表为所有键共同的值
print(inif)

d = {"名字":"李刚","年龄":18}  
r = d.items()     # .items 函数将以列表的形式返回字典中的所有键值对
print(r)

print(d.keys())   # .keys 以列表的形式返回字典中的所有键

r1 = d.values()   # .values 函数 将以列表的形式返回字典中的所有值
print(r1)

r2 = d.popitem()  # .popitem 函数用于删除字典中的最后一项,并以元组形式返回该项的key和value
print(r2)

d.setdefault("技能","上山")  #若在字典中该键已经存在,则忽略,若不存在,则添加该键和值
print(d)

D1 = {"名字":"李刚"}
D2 = {"名字":"刘齐"}
D1.update(D2)     # .update 用于将两个字典合并,若有两个相同的 key 则以要更新的为准  D1
print(D1)

#结果
{1: [1, {'name': 'dig'}, 100], 2: [1, {'name': 'dig'}, 100], 3: [1, {'name': 'dig'}, 100]}

dict_items([('名字', '李刚'), ('年龄', 18)])

dict_keys(['名字', '年龄'])

dict_values(['李刚', 18])

('年龄', 18)

{'名字': '李刚', '技能': '上山'}

{'名字': '刘齐'}

集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:
                                                                                               去重,把一个列表变成集合,就自动去重了
                                                                                               关系测试,测试两组数据之前的交集、差集、并集等关系

list_1 = [1,4,5,7,3,6,7,8,1]
list_1 = set(list_1)    #set() #创建一个集合
list_2 = set([2,4,6,0,66,88,22])
print(list_1,list_2)
#交集
print(list_1.intersection(list_2))  #取出相同的为交集
#并集
print(list_1.union(list_2))  #合并去重
#差集----我有的你没有
print(list_1.difference(list_2))  #差集 两个对比  输出list_1有,  list_2没有的
#子集
list_3 =set([1,4,5])
print(list_3.issubset(list_1))  #list_3是否包含list_1   是返回True 否则返回False

#父集
print(list_1.issuperset(list_3))  #1中是否包含了3  是返回True 否则返回False
#对称差集
print(list_1.symmetric_difference(list_2))  #把重复的去掉,把相互没有的取出来放一起

print(list_1.isdisjoint(list_2))  #如果两个集合没有相同的,则返回 True  否则返回False

#另一种用符号来表示
print(list_1 & list_2)   #交集  &

print(list_1 | list_2)   #并集  |

print(list_1 - list_2)   #差集  -

print(list_1 ^ list_2)   #对称差集   ^

#增
list_1.add(99)     #只能增加一个
list_1.update([55,77,33])   #增加多个
print(list_1)
#删
list_1.remove(33)   #删
list_1.discard(888)  # 删 如果这里没有 不会报错
print(list_1)

#结果
{1, 3, 4, 5, 6, 7, 8} {0, 2, 66, 4, 6, 22, 88}
{4, 6}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 66, 22, 88}
{1, 3, 5, 7, 8}
True
True
{0, 1, 2, 66, 3, 5, 7, 8, 22, 88}
False
#另一种用符号来表示
{4, 6}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 66, 22, 88}
{1, 3, 5, 7, 8}
{0, 1, 2, 66, 3, 5, 7, 8, 22, 88}
#增删
{1, 33, 3, 4, 5, 6, 7, 8, 99, 77, 55}
{1, 3, 4, 5, 6, 7, 8, 99, 77, 55}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值