集合/字符串

本文介绍了Python编程语言中集合的创建、相关操作,如in、add、update、remove等,以及集合之间的关系,如相等、子集、超集、交集、并集、差集和对称差集。同时,详细阐述了字符串的查询、大小写转换、对齐、切分和判断操作,包括replace和join方法的使用。

集合与字符串

集合

定义:

集合:
与列表、字典一样都属于可变类型的序列
集合中的元素不能够重复
集合中的元素是无序的

集合的创建

第一种创建方式

s={2,5,6,1,2,8,5}  # {1, 2, 5, 6, 8}
print(s)

第二种创建方式

s1=set(range(6))
print(s1,type(s1))

在这里插入图片描述

第三种创建方式

s2=set([1,2,3,4,5,6])
print(s2,type(s2))
print(set('python'))

在这里插入图片描述

定义空集合

s1=set()
print(s1) # set()

集合的相关操作

in / not in(判断操作)

s1={10,20,30,40,50,60}
print(10 in s1) # True
print(90 in s1) # False
print(89 not in s1) # True

add(一次添加一个元素)

s1={10,20,30,40,50,60}
s1.add(56)
print(s1)  # {50, 56, 20, 40, 10, 60, 30}

update(一次添加至少一个元素)

s1={50, 56, 20, 40, 10, 60, 30}
s1.update({19,49,39})
print(s1) # {39, 40, 10, 49, 50, 19, 20, 56, 60, 30}
s1.update([57,43])
print(s1) # {39, 40, 10, 43, 49, 50, 19, 20, 56, 57, 60, 30}

集合元素删除操作

remove(一次删除一个元素,不抛异常)
s1={39, 40, 10, 43, 49, 50, 19, 20, 56, 57, 60, 30}
s1.remove(10)
print(s1)  # {39, 40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
discard(一次删除一个元素,不抛出异常)
s1={39, 40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
s1.discard(870)
print(s1) # 870不存在,删除时不会抛出异常
pop() 删除一个任意元素
s1={39, 40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
s1.pop()
print(s1) # {40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
clear()清空集合
s1.clear()
print(s1) # set()

集合之间的关系

集合二是否相等(元素相同)

s1={10,20,30}
s2={30,20,10}
print(s1==s2) # True
print(s1!=s2) # False

一个集合是否是另一个集合的子集issubset

s1={10,20,30,40,50}
s2={10,20,30}
s3={10,78}
print(s2.issubset(s1)) # 是子集 True
print(s3.issubset(s1)) # 不是子集 False

一个集合是否是另一个集合的超集issuperset

s1={10,20,30,40,50}
s2={10,20,30}
s3={10,78}
print(s1.issuperset(s2)) # 是超集 True
print(s1.issuperset(s3)) # 不是超集 False

两个集合是否含有交集isdisjoint

s1={10,20,30,40,50}
s2={10,20,30}
print(s2.isdisjoint(s1)) # False:有交集
s4={100,200,300}
print(s2.isdisjoint(s4)) # True:没有交集

交集intersection

s1={10,20,30,40}
s2={20,30,40,50}
print(s1.intersection(s2)) # 交集 {40,20,30}
print(s1 & s2) # 交集 {40,20,30}

并集union

s1={10,20,30,40}
s2={20,30,40,50}
print(s1.union(s2))# {40, 10, 50, 20, 30}
print(s1|s2)  # union与|等价  {40, 10, 50, 20, 30}
print(s1) # 不变
print(s2) # 不变

差集difference

s1={10,20,30,40}
s2={20,30,40,50}
print(s1.difference(s2)) # {10}
print(s1) # 不变
print(s2) # 不变

对称差集

print(s1.symmetric_difference(s2))  # {10, 50}
print(s1^s2) # {10, 50}

集合生成式

s={i*i for i in range(6)} # {0, 1, 4, 9, 16, 25}
print(s)

字符串

介绍

# 字符串是基本数据类型,是一个不可变的序列
# 字符串的驻留机制
	非标识符的字符串不会出现驻留机制
    编译时,涉及运行会开新的空间
    -5-256

字符串驻留机制,内容相同,只创建一份

a='Python'
b="Python"
c="""Python"""
print(a,id(a))
print(b,id(b))
print(c,id(c))

在这里插入图片描述

字符串查询操作

index查找子串第一次出现的位置

不存在则抛出异常

s='hello,hello'
print(s.index('lo')) #3

rindex查找最后一次出现的位置

不存在则抛出异常

s='hello,hello'
print(s.rindex('lo')) # 9

find查找子串第一次出现位置

不存在返回-1

print(s.find('lo'))  #3

rfind查找子串最后一次出现位置

不存在返回-1

print(s.rfind('lo')) # 9

字符串中大小写字母转换

upper()将所有字母转换成大写

注意:会产生新的对象

s='hello,python'
a=s.upper()
print(a,id(a)) # HELLO,PYTHON 2002018744688

lower()将所有字母转换成小写

会产生新的对象

s1='Hello,Python'
print(s1.lower(),id(s1.lower())) # hello,python 2002018792816

swapcase 小写转大写,大写转小写

s2='hello,Python'
print(s2.swapcase())  # HELLO,pYTHON

title每个单词首字母大写,其他小写

会产生新的对象

s2='hello,Python'
print(s2.title()) # Hello,Python

字符串内容对齐操作

center():两个参数,中间对齐

第一个参数:指定宽度
第二个参数:填充符
中间对齐

s='hello,python'
print(s.center(20,'*'))  # ****hello,python****

ljust():两个参数,左对齐

第一个参数:指定宽度
第二个参数:填充符
左对齐,默认的空格

s='hello,python'
print(s.ljust(20,'*'))  # hello,python********

rjust():俩参数,右对齐

s='hello,python'
print(s.rjust(20,'&'))  # &&&&&&&&hello,python

zfill():一个参数,使用0填充,右对齐

s='hello,python'
print(s.center(20,'*')) # 00000000hello,python

字符串切分操作

split()

参数sep指定分隔符
参数maxsplit指定最大分割次数

s1='hello,world,haha'
print(s1.split(sep=','))
print(s1.split(sep=',',maxsplit=1))

在这里插入图片描述

rsplit()

从字符串右侧开始分割
sep指定分隔符

s2='hello world python'
print(s2.rsplit())  # ['hello', 'world', 'python']

字符串判断操作

isidentifier()判断是否是标识符

s="hello,python"
print(s.isidentifier()) # False

isspace()判断是否由空白符组成

空白符(回车,空格,tap)

print('\t'.isspace()) # True

isalpha:判断是否由字母组成

print('abc'.isalpha()) # True

isdecimal:判断是否由十进制数字组成

print('123'.isdecimal()) # True

isnumeric:判读三是否全由数字组成

print('abc3'.isalnum())  # True

isalnum:全部由数字和字母组成

print('abc张三123'.isalnum()) # True

字符串的替换和连接操作

replace()三个参数

s="hello,Python"
print(s.replace('Python','Java')) # hello,Java
s1='hello,python,python,python'
print(s1.replace('python','java',2)) # hello,java,java,python

join():将列表和元组种的元素连接成字符串

list1=['hello','java','python']
print('|'.join(list1)) # hello|java|python
print(''.join(list1))  # hellojavapython

t1=('hello','java','python')
print(''.join(t1))    # hellojavapython
print('*'.join('nihao')) # n*i*h*a*o

字符串比较

print('apple'>'app')
print(ord('a'))
print(chr(789))

在这里插入图片描述

ord转变为对应的ascii码值,chr将ascii码值转变为对应的字符

<think>我们参考了用户提供的引用内容,特别是引用[1]中关于Java集合字符串的方法,使用String.join()是最直接的方式。 同时,我们注意到用户询问的是“字符串集合转换为字符串”,即如何将一个包含多个字符串集合(如List<String>)连接成一个字符串。 根据引用[1]的示例,我们可以使用String.join()方法,并指定分隔符来连接集合中的所有字符串。 另外,引用[3]中虽然提到的是JavaScript的字符串方法,但用户明确要求的是字符串集合字符串,且引用[1]已给出Java的解决方案,因此我们主要参考引用[1]。 如果用户没有明确语言,但根据提供的引用内容主要涉及Java,因此我们以Java为例进行说明。 此外,我们还需要考虑一些其他情况,比如如果集合是其他类型(比如数字)需要先转换为字符串,或者使用其他语言(如JavaScript)的实现。 但用户明确要求的是“字符串集合”,所以我们假设集合中的元素已经是字符串。 因此,我们将提供两种主要语言的实现:Java(如引用[1])和JavaScript(参考引用[3]的上下文,但引用[3]中没有直接提供集合字符串的方法,所以我们需要补充)。 同时,考虑到用户可能还关心其他语言,我们补充Python和C#的简单示例。 回答结构: 1. Java的实现(直接使用String.join方法) 2. JavaScript的两种方法(使用Array的join方法) 3. 补充Python和C#的实现 4. 注意事项(如集合为空的情况) 根据要求,我们需要生成相关问题,放在最后。 注意:在回答中引用站内引用时,需要在末尾添加引用标识。由于引用[1]提供了Java的示例,我们在Java部分会引用。 </think>### 字符串集合转换为字符串的实现方法 根据引用内容,字符串集合字符串的核心是**使用连接符拼接集合元素**。不同语言的实现方式如下: #### 1. Java实现 ✨ ```java List<String> list = Arrays.asList("Java", "Python", "C++"); // 使用String.join()连接元素(引用[1]) String result = String.join(" | ", list); System.out.println(result); // 输出:"Java | Python | C++" ``` **特点**: - 需指定分隔符(如逗号、竖线等) - 适用于`List<String>`等集合类型[^1] #### 2. JavaScript实现 ```javascript const arr = ["React", "Vue", "Angular"]; // 方法1:Array.join() const str1 = arr.join(" + "); // "React + Vue + Angular" // 方法2:reduce()拼接 const str2 = arr.reduce((acc, cur) => acc + ";" + cur); // "React;Vue;Angular" ``` #### 3. Python实现 ```python langs = ["PHP", "Go", "Rust"] # join()直接拼接 result = " ~ ".join(langs) # "PHP ~ Go ~ Rust" ``` #### 4. C#实现 ```csharp var list = new List<string> { "C#", "F#", "VB.NET" }; string combined = string.Join(" → ", list); // "C# → F# → VB.NET" ``` ### 关键注意事项 ⚠️ 1. **空集合处理**:建议添加空值检查(如Java中`if(!list.isEmpty())`) 2. **特殊字符转义**:若元素包含分隔符,需提前转义 3. **性能考量**:大集合避免使用`+=`拼接(建议`StringBuilder`或`join()`) 4. **引用类型转换**:非字符串集合需先转换(如Java:`list.stream().map(Object::toString).collect(Collectors.joining())`) 5. **引用[3]的扩展**:生成字符串后可用`str.replace()`正则替换处理特殊格式需求
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值