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

news/2024/12/22 1:20:05/

集合 Set

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

1. 集合的创建

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

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

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

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

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

2. 遍历集合 for

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

3. 删除元素 remove / pop / discard

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

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

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

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

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

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

字典 dict

1. 字典的定义

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

可以存储多个数据

使用的是键值对保存数据

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

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

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

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

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

2. 字典操作

对以下字典进行操作

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

2.1 增 setdefault

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

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

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

2.2 删 (del / pop / clear)

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

2.3 改 

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

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

2.4 查 (get / .values/  .keys)

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

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

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

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

python"># 查找
# 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. 切片操作

对下面字符串进行操作

python">str1 = "abcdefg"

1. 取abcde

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

python">print(str1[0 : 5])

2. 取cde

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

python">print(str1[2 : 5])

3. 取全部 :

python">print(str1[ : ])

4. 取最后一个g

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

python">print(str1[-1])

5. 取后三个efg

python">print(str1[-3: ])

6. 间隔一个取一个aceg

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

python">print(str1[0::2])

7. 间隔两个取一个adg

默认从0开始,可以不写

python">print(str1[::3])

8. 从第二个到最后bcdefg

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

python">print(str1[1:])

9. 逆序 ::-1

python">print(str1[::-1])

推导式

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

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

推导式包括:

  • 列表推导式
  • 元组推导式
  • 集合推导式
  • 字典推导式
python">
# 列表推导
# 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]]

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

python">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)

公共方法

python">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)

http://www.ppmy.cn/news/1434713.html

相关文章

Laravel 6 - 第十三章 请求

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

Mysql全局优化总结

Mysql全局优化总结 从上图可以看出SQL及索引的优化效果是最好的,而且成本最低,所以工作中我们要在这块花更多时间 服务端系统参数 官方文档:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections…

MySQL中的死锁预防和解决

MySQL中的死锁预防和解决 死锁是数据库管理系统中常见的问题,特别是在高并发的应用场景下。MySQL数据库中的死锁会导致事务处理速度减慢,甚至完全停止,因此理解并预防死锁至关重要。本文将详细介绍如何预防MySQL中的死锁,包括常用…

oracle 12c+ max_string_size参数

一个客户的数据库版本是19.3,在做数据库复制的时候,目标端报错了,查看了一下问题发现表的字段长度有不对,在12c以前我们都知道varchar的长度最大是4000,但是客户这里居然有32767: 把客户的建表语句弄出来,放到我的一个19c的测试环境进行测试: 发现报错了: 这里报错很明显了,是M…

重发布实验:

要求: 配置: 配置IP地址: Ar1: [a1]int g 0/0/0 [a1-GigabitEthernet0/0/0]ip add 100.1.1.1 24 [a1-GigabitEthernet0/0/0]int l 0 [a1-LoopBack0]ip add 192.168.0.1 32 [a1-LoopBack0]int l1 [a1-LoopBack1]ip add 192…

Java | 冒泡排序算法实现

大家可以关注一下专栏,方便大家需要的时候直接查找,专栏将持续更新~ 题目描述 编写一个Java程序,实现冒泡排序算法。程序需要能够接收一个整型数组作为输入,并输出排序后的数组。 冒泡排序是一种简单的排序算法,它…

计算机网络 TCP/IP体系 物理层

一. TCP/IP体系 物理层 1.1 物理层的基本概念 物理层作为TCP/IP网络模型的最低层,负责直接与传输介质交互,实现比特流的传输。 要完成物理层的主要任务,需要确定以下特性: 机械特性:物理层的机械特性主要涉及网络…

一些常见的Windows命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言看版本号查找端口启动程序杀死某个端口查看全部端口看ip进入目录就是总结 前言 提示:这里可以添加本文要记录的大概内容: 例如&#x…