【Python】元组与集合

news2024/9/29 15:28:29

一、元组

  • Python 的元组与列表类似,不同之处在于元组的元素不能修改

  • 元组使用小括号,列表使用方括号。

  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可

定义空元组

print(tuple())
print(())

# 元组是一个不可变的序列,没有增加,修改和删除的对应方法,不像列表有那么多的方法;

#元组中只包含一个元素时,需要在元素后面添加逗号;

print(type((1)))
print(type((1,)))
print(type(('1')))
print(type(('1',)))

定义非空元组

name_tuple = ('张三', '李四', '王五', '啦啦啦', '王五')
print(name_tuple.count('王五'))
print(name_tuple[0])
print(name_tuple[1:4])
for i in name_tuple:
    i = i.replace('啦啦啦', '宋小宝')
print(name_tuple)
因为是一个不可变的序列,所以不能修改

# 可以通过元组推导式生成元组 默认生成一个生成器对象,需要使用tuple方法转化成元组

print(x for x in range(1, 11))
print(tuple((x for x in range(1, 11))))

公共功能

1. 相加,两个元组相加获取生成一个新的元组。

data = ("赵四","刘能") + ("宋晓峰","范德彪")
print(data) 

v1 = ("赵四","刘能")
v2 = ("宋晓峰","范德彪")
v3 = v1 + v2
print(v3) 

2. 相乘,元组*整型 将元组中的元素再创建N份并生成一个新的元组。

data = ("赵四","刘能") * 2
print(data) 
v1 = ("赵四","刘能")
v2 = v1 * 2
print(v1) 
print(v2)

3. 获取长度

user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( len(user_list) )

4. 索引

user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( user_list[0] )
print( user_list[2] )
print( user_list[3] )

5. 切片

user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( user_list[0:2] )
print( user_list[1:] )
print( user_list[:-1] )

6. 步长

user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
print( user_list[1:4:2] )
print( user_list[0::2] )
print( user_list[1::2] )
print( user_list[4:1:-1] )
# 字符串 & 元组。
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
data = user_list[::-1]
# 列表
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
data = user_list[::-1]
user_list.reverse()
print(user_list)

7. for循环

user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for item in user_list:
    print(item)
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")

目前:只有 str、list、tuple 可以被for循环。 "xxx" [11,22,33] (111,22,33)

# len + range + for + 索引
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for index in range(len(user_list)):
item = user_list[index]
print(item)

# 字符串和列表可以转换为元组

name = 'nebula'
name_list = ['china', 'usa', 'russia']
print(tuple(name))
print(tuple(name_list))

# 元组嵌套其他数据类型 如果嵌套元素为可变类型 比如列表,则其值可以被修改 ;

li = ("lvpengfei", [11,22,(88,99,100,),33],  "大胖",  ("ritian", "barry",),  "wenzhou")
li[1][0] = 12
print(li)
li[1][1] = 23
print(li)
li[1].append(44)
print(li)

二、集合

  • 集合(set)是一个无序的不重复元素序列

  • 可以使用大括号 { }或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

  • 创建格式:

parame = {value01,value02,...}
或者
set(value)

set1 = {11, 22, 33, 44, 55, 55, 33}
print(set1)
输出一个集合会自动去重;

集合可以实现对列表进行去重

list1 = [1, 2, 2, 3, 3, 4, 4]
print(list(set(list1)))

添加元组元素

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.add(23)
print(set1)
添加元素或者删除元素都是在任意位置添加或删除;
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

删除元组元素

pop方法

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.pop()
print(set1)
使用pop方法删除元组,是删除任意元素;

remove方法

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.remove(11)
print(set1)
set1.remove(888)
print(set1)
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

discard方法

set1 = {11, 22, 33, 44, 55, 55, 33}

set1.discard(888)
print(set1)
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误,输出原集合,什么也不做;

计算集合元素个数

len(s)方法

set1 = {11, 22, 33, 44, 55, 55, 33}

print(len(set1))

清空集合

s.clear()

set1 = {11, 22, 33, 44, 55, 55, 33}
set1.clear()
print(set1)

判断元素是否在集合中存在

thisset = {"Google", "Runoob", "Taobao"}
print("Runoob" in thisset)

print("Facebook" in thisset)

集合内置方法完整列表

方法

描述

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素


# 使用其他集合更新到自己的集合中,相同元素会去重

set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}
set1.update(set3)
print(set1)

# 子集合的判断

set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}

print(set3.issubset(set1))

# 本集合的内容不在另一个集合中的元素组成一个新集合输出

set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}


print(set3.difference(set1))

# 列表不能被hash  所以不能作为集合的元素
set4 = {[1, 2, 4], 1, 2}
print(set4)

# 集合不能被hash  所以不能作为集合元素
set5 = {{1,3,4},2,4}
print(set5)

set6 = {1, 'aaa', True, (1, 2)}
print(set6)  #1和True被认为是一个值;0和False被认为是一个值;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flutter入门到进阶】Flutter基础篇---基础组件

1 Container容器组件 1.1 属性说明 1.1.1 alignment topCenter:顶部居中对齐 topLeft:顶部左对齐 topRight:顶部右对齐 center:水平垂直居中对齐 centerLeft:垂直居中水平居左对齐 centerRight:垂直居中水…

python自学之《21天学通Python》(17)——第20章 案例1 做一个Windows 上的360工具

Python的语法简洁而清晰,具有丰富和强大的类库及第三方库。它能够很轻松地将各种语言模块联结在一起,所以被称为“胶水”语言。当然,Python也能够方便快捷地编写一些常用的工具程序,而用其他程序设计语言需要编写很复杂的代码来完…

算法训练营 day60 动态规划 回文子串 最长回文子序列

算法训练营 day60 动态规划 回文子串 最长回文子序列 回文子串 647. 回文子串 - 力扣(LeetCode) 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的…

DIY-BETAFPV和DIY(ESP-01F+E19-900M20S2模块)915MHz信号测试对比

DIY-BETAFPV和DIY(ESP-01FE19-900M20S2模块)915MHz信号测试对比1. 前提条件2. 实测效果2.1 起点附近(距离3m左右)2.2 30m米距离(树梢)2.3 80米距离3. 整体比较4. PCBA分析4.1 DIY-BETAFPV4.2 DIY&#xff0…

node的多版本控制器,nvm,nvm使用,nvm安装

缘起 拿到新项目,第一步当然是启动项目,对于超大型项目,一个npm install 成功与失败,就是五五开。 原因如下: karma1.7.1: wanted: {"node":"0.10 || 0.12 || 4 || 5 || 6 || 7 || 8"} (curren…

rewrite 复现细节以及相关配置

github链接:https://github.com/kaonashi-tyc/Rewrite 网络的结构框架以及相关参数: 每个卷积层后面是一个批处理归一化层,然后是一个ReLu层,一直到零填充。 正如Erik的博客中提到的,该网络针对预测输出和地面真相之间的像素级MAE(平均绝对误差)最小化,而不是更常用的M…

Spring boot ResponseBodyAdvice接口全局统一返回控制,Api返回值是String 类型时异常

ResponseBodyAdvice简介在大部分前后端分离项目中,后端的返回值基本都需要包装成一个GlobalResponse,其中属性有code、message、data等,来供前端使用。这样就导致大部分Api写完后都需要手动构建一个GlobalResponse对象并填充属性返回&#xf…

如何使用BWASP对Web应用程序进行安全漏洞手工分析

关于BWASP BWASP是一款针对Web应用程序安全的开源工具,在该工具的帮助下,广大研究人员可以通过手工方式对Web应用程序进行漏洞分析。 BWASP工具可以通过对漏洞的分析来给广大研究人员提供预测信息,而无需对目标执行实际的渗透测试。 BWASP…

【STM32】cmsis-dap调试器-OpenOCD功能集成进CubeIDE中

前言 被自己买的Jlink真是要整烦了 一下连不上,一下固件掉升级,一下说是D版不给调试 于是乎决定,我买了个CMSIS-DAP调试器,决定放弃JLink这等#$%^&货… CMSIS-DAP 调试器 这个是开源调试器,硬件软件开源&#x…

Vue项目如何进行部署?是否有遇到部署服务后刷新404问题?

一、如何部署 前后端分离开发模式下,前后端是独立部署的,前端只需要将最后的构建物上传至目标服务器的Web容器指定的的静态目录下即可 我们知道vue项目在构建后,是生成一系列的静态文件 常规布署我们只需要将这个目录上传至目标服务器即可…

【Java】StringBuffer、StringBuilder

1. StringBuffer、StringBuilder、String对比 String:不可变的字符序列;对于增删改效率最低StringBuffer:可变的字符序列;jdk1.0声明;线程安全(使用了synchronized同步方法),所以效…

什么是工业物联网(IIoT)?

什么是工业物联网(IIoT)?工业物联网(IIoT) 被定义为一组设备和应用,允许大企业创建从核心到边缘的端到端连接环境。其还包括传统的物理基础设施,如集装箱和物流卡车,以收集数据,对事件做出反应,并在智能设备的帮助下做…

2023中国绿色铝业国际峰会 演讲嘉宾确认

2023中国绿色铝业国际峰会将以“双碳”目标下的铝业发展为主题,结合最佳案例和实践分享,探讨绿色铝业发展路径和最新技术,致力于打造一个绿色可持续的铝行业,助力中国实现“碳中和”目标。 会议时间/地点/主办方 2023年3月23日-…

JavaSE14-面向对象-修饰符

文章目录一、权限修饰符和包1.权限修饰符2.包二、static1.静态成员的调用格式2.注意事项3.static内存图4.使用场景三、final一、权限修饰符和包 1.权限修饰符 使用权限修饰符来控制被修饰的成员(如成员变量)的使用权限Java中有四种权限修饰符&#xff…

zabbix中的JMX监控、集成告警平台、分布式监控

文章目录前言一、zabbix中的JMX监控二、集成告警平台:zabbix监控结合睿象云报警三、分布式监控1.agent端主动回传数据2.proxy代理前言 一、zabbix中的JMX监控 JMX介绍: Jmx(Java Management Extensions)java管理拓展 JMX特点&…

linux代码库生成-make示例

1、add.c代码实现加法运算: int add(int a,int b) { return ab; } 2、头文件add.h #ifndef ADD_H #define ADD_H int add(int a,int b); #endif 3、CMakeLists.txt编写 cmake_minimum_required(VERSION 2.6) set(CMAKE_C_FLAGS -m32) project(test_add) include_dir…

OpenMLDB 社区月报 | 2023 年 2 月

导言 OpenMLDB 社区每个月都会发布一版社区月报,总结一个月以来的产品动态、社区活动、内容发布等,让大家对我们社区的发展有更加清晰的了解。如果您对我们的社区有任何建议,欢迎在 GitHub 上提 Issues 或 PR ,共同参与社区的建设…

统计学 假设检验

文章目录假设检验假设检验的基本原理提出假设作出决策表述决策结果一个总体参数的检验总体均值的检验总体比例的检验总体方差的检验两个总体参数的检验两个总体均值之差的检验两个总体比例之差的检验两个总体方差比的检验总体分布的检验正态性检验的图示法Shapiro-Wilk 和 K-S …

Vue3 企业级项目实战:通关 Vue3 企业级项目开发,升职加薪快人一步

Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发,升职加薪,快人一步。。「Vue3 企业级项目实战」由程序员十三撰写,2744人购买https://s.juejin.cn/ds/S2RkR9F/ 课程介绍 很高兴为大家介绍这个…

LeetCode 1326. Minimum Number of Taps to Open to Water a Garden【贪心,桶排序】

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…