初学python_day05

本文深入探讨Python中的列表、字典、元组和集合等数据结构的特性与操作,包括增删改查、排序、反转等实用技巧,以及它们在实际编程中的应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 昨日内容回顾

  列表:
    增:
      insert(index,元素)
      append([1,2,3]) 追加
      extend([1,2,3]) 1, 2, 3,

    删:
      pop(index) 按照所以删除 有返回值
      remove(object) 按照元素
      clear() 清空
      del
      del l1[index]
      del l1[1:3:2]
      del l1

    改:
      l1[1] = 666
      l1[1:3] = 'abcd'
      l1[1:4:2] = 'ab'

    查:
      按照索引切片。
      for 循环

    其他方法:
      len(l1)
      count(object)
      sort 排序 从小到大
      sort(reverse= True) 从大到小
      reverse() 反转
      index()

  元组:
    只读列表
    range 可控制范围的数字列表
    range(1,10)
    与for配合使用


02 作业讲解

 


03 字典
  why:
    列表的缺点:
      1,列表如果存储的数据比较多,那么他的查询速度相对慢。
      2,列表存储的数据关联性不强。

  what: python基础数据类型之一:字典。
      python中唯一的映射类的数据,花括号{}括起来,他是以键值对形式存储,每一对键值对以
      逗号隔开的。
      {'name': '太白金星', 'age': 18, 'sex': 'man'}
    ps:
      数据类型的划分:
        容器非容器划分:
          容器型数据类型:list,tuple,dict,set。
          非容器型数据类型:int str bool

        可变与不可变划分:
          可变(不可哈希hash)的数据类型:list dict,set
          不可变(可哈希hash的)的数据类型: int bool str tuple
                    对数据本身变化:
                    i = 100
                    i = 90
                    print(i)
    字典是以键值对形式存储的,
    键:不重复的,唯一的,键的数据类型必须是不可变的数据类型。
    值:任意数据类型,对象。
    字典可以存储大量的键值对数据,
    python3.5包括3.5之前:字典是无序的。
    python3.6之后,字典变成有序的。
    字典的优点:
      1,字典存储大量的关系型数据。
      2,字典的查询速度非常快。

  how:
  where:

 

 

04 字典的嵌套

 

 

05 集合(了解)

 

回顾:字典特点:

1.key是唯一的.

2.key必须是可以哈希的(不可变数据类型:字符串,元组,数值)

3.key是无序的.

3.6dict的元素有序是解释器的特点,不是python源码的特点.

xxx.py

Cpython -> 有序

Jpython -> 无序

 

集合:set

实际上就是一种特殊的字典.

所有value都是None的字典,就是集合.

 

 

对比字典和集合的特点:

字典

集合

Key唯一

元素唯一

Key可以哈希

元素可以哈希

Key无序

元素无序

 

如何获取集合?

1.手动创建集合.

1.创建空集合

d = {}

创建空集合,只有一种方式:调用set函数.

S = set()

 

 

2.创建带元素集合

S = {1,2,3}

从可迭代对象中(字符串,列表,元组,字典)创建集合.

s = set(‘abc’)

S = set([1,2,3])

S = set((1,2,3))

S = set({‘name’:’Andy’,’age’:10})

 

 

2.通过方法调用

-> str

-> list

-> set

 

 

集合的操作:

查看集合可用的方法:

[x for x in dir(set) if not x.startswith(‘_’)]

 

['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

 

 

:

add:如果元素存在,没有做任何动作.

 

:

Pop() :依次从集合中弹出一个元素,如果集合为空,报错

Discard(ele) :从集合中删除指定的元素,如果不存在,什么都不执行

Remove(ele) :从集合中删除指定的元素,如果不存在,报错

Clear() :清空

 

集合的四大常用操作:

并集:union

交集:intersection

差集:difference

对称差:symmetric_difference

 

 

 

(更新):

Update :用二者的并集更新当前集合

difference_update:用二者的差集更新当前集合

intersection_update:用二者的交集更新当前集合

symmetric_difference_update:用二者的对称差集更新当前集合

 

 

判断功能:

Isdisjoint:判断两个集合是否没有交集

Issubset:判断当前集合是否是后者的子集

Issuperset:判断后者是否是当前集合的子集

 

 

集合基本没有单独取其中元素的需求.

 

 

集合的使用场景:

1.判断一个元素是否在指定的范围之内.

2.方便数学上的集合操作.

,,,对称差

有简化写法:

:|

:&

:-

对称差:^

 

3.对序列数据类型中的重复元素进行去重

 

如果想遍历集合中的元素.

通常用for循环.

 

 

frozenset:冻结的集合

最大的特点:不可变.

 

['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']

 

少了添加,更新的方法.

 

s = frozenset()

 

s = frozenset('abcabc')

s = frozenset([1,2,3])

s = frozenset((1,2,3))

s = frozenset({'name':'Andy','age':10})

 

集合的四大方法:,,,对称差.

set,frozenset是否可以混用?

可以!

总结:

如果两种数据类型混用,方法的主调者的类型决定了最终结果的类型.

 

frozenset应用场景:

凡是使用到不可改变的数据的场景,都是可以使用frozenset.

 

 

set集合的元素:必须是可以哈希的,set本身不是可以哈希.

但是frozenset是不可变的数据.(可以哈希的),它是可以放到集合中.

 

setfrozenset可以互相转换.

 

 

 

 

 


今日总结:
  字典。
    增删改查以及其他操作:全部会用。

 

  作业

day05作业及默写
Day05作业及默写
1.有如下变量(tu是个元祖),请实现要求的功能
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
a. 讲述元祖的特性
b. 请问tu变量中的第⼀个元素 "alex" 是否可被修改?
c. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在
其中添加⼀个元素 "Seven"
d. 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其
中添加⼀个元素 "Seven"
2.字典dic,dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
1. 请循环输出所有的key
2. 请循环输出所有的value
c. 请循环输出所有的key和value
d. 请在字典中添加⼀个键值对,"k4": "v4",输出添加后的字典
e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
f. 请在k3对应的值中追加⼀个元素 44,输出修改后的字典
g. 请在k3对应的值的第 1 个位置插⼊个元素 18,输出修改后的字典
3.av_catalog = {
"欧美":{
"www.太⽩.com": ["很多免费的,世界最⼤的","质量⼀般"],
"www.alex.com": ["很多免费的,也很⼤","质量⽐yourporn⾼点"],
"oldboy.com": ["多是⾃拍,⾼质量图⽚很多","资源不多,更新慢"],
"hao222.com":["质量很⾼,真的很⾼","全部收费,屌丝请绕过"]
},
"⽇韩":{
"tokyo-hot":["质量怎样不清楚,个⼈已经不喜欢⽇韩范了","verygood"]
},
"⼤陆":{
"1024":["全部免费,真好,好⼈⼀⽣平安","服务器在国外,慢"]
}
}
a,给此 ["很多免费的,世界最⼤的","质量⼀般"]列表第⼆个位置插⼊⼀个 元素:'量很
⼤'。
b,将此 ["质量很⾼,真的很⾼","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过"
删除。
c,将此["质量怎样不清楚,个⼈已经不喜欢⽇韩范了","verygood"]列表的
"verygood"全部 变成⼤写。
d,给 '⼤陆' 对应的字典添加⼀个键值对 '1048' :['⼀天就封了']
e,"oldboy.com": ["多是⾃拍,⾼质量图⽚很多","资源不多,更新慢"]
f,给此["全部免费,真好,好⼈⼀⽣平安","服务器在国外,慢"]列表的第⼀个元素,加上
⼀句话:'可以爬下来'
4.有字符串"k: 1|k1 :2|k2:3 |k3 :4" 处理成字典 {'k':1,'k1':2....} (升级题)
5.元素分类
有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有⼤于 66 的值保存⾄字典的
第⼀个key中,将⼩于 66 的值保存⾄第⼆个key的值中。
即: {'k1': ⼤于66的所有值列表, 'k2': ⼩于66的所有值列表}
6.输出商品列表,⽤户输⼊序号,显示⽤户选中的商品
商品列表:
goods = [{"name": "电脑", "price": 1999},
{"name": "⿏标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美⼥", "price": 998}, ]
要求:
1:⻚⾯显示 序号 + 商品名称 + 商品价格,如:
1 电脑 1999
2 ⿏标 10

2:⽤户输⼊选择的商品序号,然后打印商品名称及商品价格
3:如果⽤户输⼊的商品序号有误,则提示输⼊有误,并重新输⼊。
4:⽤户输⼊Q或者q,退出程序。
明⽇默写内容。
1)字典的增删改查。
2)过滤敏感字符代码的默写。
li = ["苍⽼师","东京热","武藤兰","波多野结⾐"]
l1 = []
comment = input('请输⼊评论>>>')
for i in li:
comment = comment.replace(i,'*'*len(i))
l1.append(comment)
print(l1)


明日内容:
数据类型的补充。解决各种坑。
编码的进阶。
小数据池。

 

转载于:https://www.cnblogs.com/s1046765710/p/10492261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值