Python第五章之集合,切片,推导式,公共方法

集合 Set

set 被称为集合, 是无序的, 并且集合中的元素都是唯一的

1. 集合的创建

s = {"zs", "ls", "ww"}
print(p)

打印的结果是不固定, 所以集合无序

结果为 : {"ww", "zs", "ls"}

s = {"zs", "zs", "ls", "ww"}
print(s)

结果为 : {"zs", "ls", "ww"}

2. 遍历集合 for

s = {'张三','李四','王五'}
# 遍历集合
for ele in s:
    print(ele)

3. 删除元素 remove / pop / discard

remove 删除, 如果有直接删除, 如果没有会报错

s = {'张三','李四','王五'}
# 删除张三 
s.remove('张三')

pop 删除,随机删除集合中的元素并返回,如果集合中没有元素,则程序报错

s = {'张三','李四','王五'}
# pop 随机删除
print(s.pop())

discard 删除,元素存在则直接删除,如果元素不存在,则不做任何操作

s = {'张三','李四','王五'}
# discard 删除元素 如果元素不存在,不做任何处理
s.discard('林青霞')

字典 dict

1. 字典的定义

dictionary (字典) 是除列表以外Python之中最灵活的数据类型

可以存储多个数据

使用的是键值对保存数据

使用 { } 定义数据, 键值对之间使用 , 分割, 键和值之间使用 : 分割

d = {
    "name" : "zs",
    "age" : 18,
    "sex" : "男"
}

字典中的键相当于索引,必须是唯一的

d = {'中国':'China','英国':'England','美国':'America','美国':'USA'}
print(d)

结果为: {'中国': 'China', '英国': 'England', '美国': 'USA'}

2. 字典操作

对以下字典进行操作

dic = {
    "name": "张三",
    "age": 18,
    "sex": "男",
    "hobby": ["吃", "喝", "玩"]
}

2.1 增 setdefault

字典名["新的键"] = 新的值

字典名.setdefault("键名", 值)

# 添加
# dic["新的键"] = 值
# setdefault(key, value)
dic["gender"] = "二年级"
print(dic)
dic.setdefault("home", "阿拉伯")
print(dic)

2.2 删 (del / pop / clear)

del 字典[键]   键不存在, 报错
字典.pop(键)   键不存在, 报错
字典.clear    清空字典
del dic["name"]
print(dic)
dic.pop("age")
print(dic)
dic.clear()
print(dic)

2.3 改 

直接使用字典名["键名"] 进行修改

# 直接修改
dic["name"] = "李四"
print(dic["name"])

2.4 查 (get / .values/  .keys)

字典名 ["键名"]    当键不存在时, 报错

字典名.get ["键名"]    当键不存在时, 返回None

字典名.values() 获取所有值

字典名.keys() 获取所有键

# 查找
# dic["键名"]
# get("键名")
# dic.values() 获取所有值
# dic.keys() 获取所有键
print(dic)
print(dic["name"])
print(dic["hobby"])
print(dic.get("name"))

print(dic.values())
print(dic.keys())

切片

1. 切片的定义

获取数据中一部分数据

取一个strlisttuple的部分元素是非常常见的操作

  • 切片 译自英文单词slice,指的是一部分
  • 切片 根据 步长step 从原序列中取出一部分元素组成新序列
  • 切片适用于 字符串、列表、元组
  • 开始索引:结束索引:步长
  • 步长不写默认为 1

2. 切片的格式

字符串[开始索引:结束索引:步长]

包含开始索引, 不包含结束索引

3. 索引的正序和倒序

索引分为正序和倒序

  • 正序:从左向右,0开始
  • 倒序:从右向左,-1开始

4. 切片操作

对下面字符串进行操作

str1 = "abcdefg"

1. 取abcde

开始下标为 0 , 到5结束, 取到下标为 0,1,2,3,4

print(str1[0 : 5])

2. 取cde

开始下标为2, 到5结束, 取到下标为2, 3, 4

print(str1[2 : 5])

3. 取全部 :

print(str1[ : ])

4. 取最后一个g

后面从下标 -1 开始, -1, -2,-3...取几个就是-几

print(str1[-1])

5. 取后三个efg

print(str1[-3: ])

6. 间隔一个取一个aceg

间隔1个,传2, 间隔2个传3...

print(str1[0::2])

7. 间隔两个取一个adg

默认从0开始,可以不写

print(str1[::3])

8. 从第二个到最后bcdefg

从第几个到最后,就是第几个的下标:

print(str1[1:])

9. 逆序 ::-1

print(str1[::-1])

推导式

推导式指的是轻量级循环创建数据的方式,对列表或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。

简单来说: 推导式: 轻量级循环创建数据的方式,取出满足条件的数据,组成新的数据

推导式包括:

  • 列表推导式
  • 元组推导式
  • 集合推导式
  • 字典推导式

# 列表推导
# lst = [x for x in range(1, 10)]
# print(lst)
# 1 2 3 4 5 6 7 8 9
print("-----------------列表推导----------------")
# 根据条件生成新的列表
lst = [x for x in range(1, 10) if x % 2 == 0]
print(lst)  # [2, 4, 6, 8]

# 1-10的3次方中的偶数
lst1 = [pow(x, 3) for x in range(1, 10)]
lst2 = [pow(x, 3) for x in range(1, 10) if x % 2 == 0]
print(lst1)
print(lst2)

"""
zip 合成一个元组
"""
lst3 = [x for x in zip(range(0, 6), range(7, 11))]
print(lst3)
# [(0, 7), (1, 8), (2, 9), (3, 10)]


print("-----------------元组推导----------------")
# 元组推导tuple()转换, 否则出现地址
tu1 = tuple(t for t in range(1, 11))
print(tu1)
tu2 = tuple(t for t in range(1, 11) if t % 2 == 0)
print(tu2)

print("-----------------字典推导----------------")
# 字典推导需要键值对, 并且需要zip
# 数据量根据键来决定
dic = {k + 3: v for k, v in zip(range(1, 10), range(21, 30)) if k % 2 == 0}
print(dic)

推导式练习

需求:

请写出一段 Python 代码实现分组一个 list 里面的元素
比如 [1,2,3,...100] 变成 [[1,2,3],[4,5,6]....[100]]

需要将列表中三个元素一组分隔,剩下的最后一组,其实就是对列表进行切片操作

lst = [i for i in range(1, 101)]
# print(lst)
# print(len(lst))
print(lst[0:3])  # [1, 2, 3]

new_lst = [lst[i:i + 3] for i in range(0, len(lst)) if i % 3 == 0]
print(new_lst)

公共方法



lst = [1, 2, 3, 4, 5]
print(len(lst))
del lst[1]
print(lst)
print(max(lst))
print(min(lst))
str1 = "今天是个好日子"
print(max(str1))
str2 = "abcdefg"
print(min(str2))
print(len(str2))

s2 = "你好"
s1 = "世界"
print(s2 + s1)
print(s1*3)
print('你' in s2)
print("你" not in s2)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值