学习python第7天

集合和字符串

一、集合

1.什么是集合

集合是容器型数据类型:将{}作为容器的标志,多个元素用逗号隔开:{元素1,元素2,元素3,…};
集合是可变的,无序的;
集合的元素:不可变的,唯一的。

  • 空集合
y = set() 
print(type(y))  # <class 'set'>
  • 元素不可变
set1 = {12, 'abc', (10, 20)}
# set1 = {12, 'abc', [10, 20]}   # TypeError: unhashable type: 'list'
  • 元素是唯一的(集合自带去重功能)
set3 = {1, 2, 3, 1, 1, 2, 4}
print(set3)  # {1, 2, 3, 4}
  • 集合无序
print({1, 2} == {2, 1})  # True
2.集合的增删改查
  • 查 - 遍历
set4 = {10, 20, 70, 80}
for x in set4:
    print(x)  # 80 10 20 70

  • 集合.add(元素) - 在集合中添加元素
set4 = {10, 20, 70, 80}
set4.add(100)
print(set4)  # {100, 70, 10, 80, 20}

集合.update(序列) - 将序列中所有的元素添加到集合中

set4.update('abc')
print(set4)  # {100, 70, 'a', 10, 80, 'b', 20, 'c'}

  • 集合.remove(元素) - 删除指定元素(如果元素不存在会报错)
set4 = {10, 20, 70, 80}
set4.remove(20)
print(set4)  # {80, 10, 70}
# set4.remove(200)     # KeyError: 200

集合.discard(元素) - 删除指定元素(如果元素不存在不会报错)

set4 = {10, 20, 70, 80}
set4.discard(20)
print(set4)  # {80, 10, 70}
set4.discard(200)
  • 改 - 无法修改元素
3.数学集合运算

python中的集合支持数学的集合运算:子集(>,<,>=,<=),并集(|),交集(&),差集(-),对称差集(^).

  • 子集
    集合1>集合2 - 判断集合2是否是集合1的真子集
print({10, 20, 30} > {20, 30})     # True
print({10, 20} > {10, 20})         # False

集合1>=集合2 - 判断集合2是否是集合1的子集

print({10, 20, 30} >= {20, 30})     # True
print({10, 20} >= {10, 20})         # True
  • 并集
set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
print(set1 | set2)   # {1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 交集
print(set1 & set2)  # {4, 5, 6}
  • 差集
print(set1 - set2)   # {1, 2, 3}
print(set2 - set1)   # {8, 9, 7}
  • 对称差集
print(set1 ^ set2)   # {1, 2, 3, 7, 8, 9}

二、字符串和字符

1.什么是字符串

字符串是容器型数据类型:以’ ‘或者" “或者”"" “”"或者’’’ ‘’'作为容器的标志,里面多个字符(任意符号)。
字符串是不可变的(不支持增删改);有序的(支持下标操作);
字符串的元素:字符串的每个基本单元,字符(任何符号都可以)。

str1 = 'abc'
str2 = "abc"
str3 = """abc"""
str4 = '''abc'''
print(type(str1), type(str2), type(str3), type(str4))  
# <class 'str'> <class 'str'> <class 'str'> <class 'str'>

‘’’ ‘’'和""" “”"引起来的字符串可以直接敲回车换行。

2.字符

python中没有字符对应的类型只有字符的概念。
普通字符:包含所有的符号,例如:数字,字母,中文,各种图形符号等。
转义字符:和\结合后具有特殊功能和特殊意义的字符。(转义字符不是python中的概念)

  • \n - 换行
  • \t - 一个水平制表符(相当于按一下tab键)
  • ’ - 一个单引号
  • " - 一个双引号
  • \ - 一个反斜杠字符
    注意:任何一个转义字符的长度都是1
str1 = '123\nabc'
print(str1)
# 123
# abc
str2 = '123\'abc'
print(str2)  # 123'abc

str3 = "123\"abc"
print(str3)  # 123"abc

str4 = "123\\nabc"
print(str4)  # 123\nabc

str5 = '\t123abc'
print(str5)  #  123abc

\u4位的16进制数 - 编码字符

str6 = '123\u4effabc'
print(str6)  # 123仿abc
3.阻止转义

python中在字符串的最前面加r/R,可以让这个字符串中所有的转义字符的功能消失。

str7 = '\t123\nabc\\aaa\u4ea0'
print(str7, len(str7))  # abc\aaa亠 13

str8 = r'\t123\nabc\\aaa\u4ea0'
print(str8, len(str8))  # \t123\nabc\\aaa\u4ea0 21

三、字符编码

1.计算机数据存储

计算机在存储数据的时候,只能直接存储数字数据,而且是以二进制的形式存储的数字。
1T == 1024Gb;1Gb == 1024mb;1mb == 1024kb;1kb == 1024字节;
1字节(byte) == 8位(bit)。

2.字符编码
  • 字符编码
    为了能够让计算机存储字符,我们给每个字符都关联一个具体的数字,在需要存储字符的时候就存储字符对应的数据。
  • 保存字符和数字一一对应关系的表就是字符的编程表,常用的字符编码表有两种:ASCII码表、Unicode编码表。
    ASCII码表:采用一个字节对128个字符进行编码,其中包括常用的英文符号、数字和字母。其他数字的编码在字母的前面,大写字母编码在小写字母的前面,大写字母和小写字母不连续。
    Unicode编码表:叫万国码,包含了世界上所有国家所有名族的所有语言的符号。前128个字符ASCII码表中的字符,其中中文的编码范围是:4e00 ~ 9fa5。
  • 编码字符:\u四位的16进制数(这儿的4位16进制数就是字母的编码值)。
str1 = 'a\u0061'
print(str1)  # aa
print('\u4e03')  # 七
  • chr函数
    chr(编码值) - 获取编码值对应的字符
  • ord函数
    ord(字符) - 获取字符的编码值
print(ord('吴'), ord('健'))   # 21556 20581
print(hex(ord('吴')), hex(ord('健')))   # 0x5434 0x5065

四、字符串的相关操作

1.获取字符

字符串获取字符和列表获取元素的方法一样

  • 获取单个字符
str1 = '人生苦短,我用python!'
print(str1[5])  # 我

str2 = 'how are\n you!'
print(str2[-4], str2[9])  # y y
  • 切片
message = '曾经有一份真挚的爱情摆在我面前,我没有珍惜...'
print(message[1:])  # 经有一份真挚的爱情摆在我面前,我没有珍惜...
print(message[2:10:3])  # 有真爱
print(message[-10:-2:-1])  # ''
  • 遍历
message2 = '我不是针对某一个人,我只是觉得在座的各位都是垃圾'
for x in message2:
    print(x)

message3 = 'you jump, i jump!'
for x, y in enumerate(message3):
    print(x, y)
2.加法和乘法运算
  • 字符串1 + 字符串2 - 将两个字符串合并产生一个新的字符串
str1 = 'abc' + '123'
print(str1)  # abc123
  • 字符串 * N/N * 字符串 - 字符串重复N次产生一个新的字符串
str2 = 'abc' * 3
print(str2)  # abcabcabc
3.比较运算:>, <, >=, <=

两个字符串比较大小比较的是第一对不相等的字符的编码值大小。

  • 判断一个字符是否是小写字母:‘a’ <= x <= ‘z’
  • 判断一个字符是否是大写字母:‘A’ <= x <= ‘Z’
  • 判断一个字符是否是字母:‘a’ <= x <= ‘z’ or ‘A’ <= x <= ‘Z’
  • 判断一个字符是否是数字字符:‘0’ <= x <= ‘9’
  • 判断一个字符是否是中文字符:’\u4e00’ <= x <= ‘\u9fa5’
print('abc' > 'ABC123')  # True
print('你132' > 'a123')  # True
4.in 和 not in
  • 字符 in 字符串 - 判断字符串中是否有指定的字符。
  • 字符串1 in 字符串2 - 判断字符串2中是否有字符串.
print('a' in 'abc')               # True
print('how' in 'how are you')     # True
print('how' in 'habcsda')         # False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值