Python中的集合和字符串

一。集合

1.什么是集合(集合不能排序,数据不能重复,所以这些情况不适合用集合)
  • 集合是容器型数据;将{}作为容器的标志,多个元素用逗号隔开:{元素1,元素2,元素3,。。。}
  • 集合是可变的(支持增删改);无序的(不支持下标操作);
  • 元素:不可变的,唯一的(和key是一样的)
# 空集合
x = {}  # {}是空字典
print(type(x))  # class dict
y = set()  # 空集合
print(type(y), len(y))  # class  set
# 元素不可变的
set1 = {12, 'abc', (10, 20)}
# set2 ={12,'abc',[10,20]}  # TypeError: unhashable type: 'list',
# 会报错。

# 元素是唯一的(自带去重功能)
set3 = {1, 2, 3, 4, 1, 2, 2}
print(set3)  # {1, 2, 3, 4},只保留一个
# 集合去重
names = ['张三', '李四', '王五', '张三']
names = set(names)
print(names)

# 集合是无序
print({1, 2} == {2, 1})  # True
2.集合的增删改查
  • 1)查 - 只有遍历
set4 = {10, 20, 30, 40}
for x in set4:
    print(x)
  • 2)增
  • a. 集合.add(元素) - 在集合中添加元素
  • b.集合.update(序列) - 将序列中所有的元素添加到集合中
set4.update('abc')
print(set4)  # {100, 'c', 40, 10, 'a', 'b', 20, 30}
  • 3)删

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

  • b.集合.discard(元素) - 删除指定元素(元素不存在不报错)

  • 4)改 - 无法修改元素,可以删除后添加。

3.数学集合运算(适合用集合)
  • python中的集合支持数学的集合运算:子集(> ,< ,>=,<=)、并集(|)、交集(&)、差集(-)、对称差集(^)
    1)子集
    print({200, 300, 400} > {1, 2}) # False(不是比较大小)
    a.集合1>集合2 - 判断集合2是否是集合1的真子集。
    print({10, 20, 30} > {10, 20}) # True

b. 集合1>= 集合2 - 判断集合2是否是集合1的子集
print({10, 20, 30} >= {10, 20}) # True
print({10, 20} >= {10, 20})
2)并集
set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8}
3)交集
print(set1 & set2) # (4,5,6)
4)差集
print(set1 - set2)
5)对称差集
print(set1 ^ set2)

2.字符串和字符

1.什么是字符串
  • 字符串是容器型数据类型:以’’ 或者"" 或者""""""或者 ‘’’’’'作为容器的标志,里面多个字符(任意符号)。
    不可变的(没有增删改,所有的修改操作都是在创建一个新的字符串);有序的(支持下标操作)
    字符串的元素:字符串的每个基本单元,字符(任何符号都可以),[]
2.字符
  • 普通字符:包含所有的符号,例如:数字、字母、中文、各种图形符号等。除了特殊字符以外的所有字符
  • 特殊字符:转义字符,和\结合后具有特殊功能和特殊意义的字符,就是转义字符。(转义字符不是python中的概念)
    比如:
    \n - 换行
    \t - 一个水平制表符(相当于按一次TAP键)
    ’ - 一个单引号字符
    " - 一个双引号字符
    \ \ - 一个反斜杠字符
    注意:任何一个转义字符的长度都是1.
str1 = 'abc\nabc\n你好'
print(str1)
poem = '鹅鹅鹅,\n曲项向天歌。\n白毛浮绿水,\n红掌拨清波。'
str3 = "123'abc"  # ""中间放''也可以。
print(str3)
str4 = "123\\nabc"  # 两个\\就可以
print(str4)  # 123\nabc

print(poem)
3.阻止转义
  • python中在字符串的最前面加r/R,可以让这个字符串中所有的转义字符的功能消失
str7 = '\t123\nabc\\aaa\u4e00'
print(str7,len(str7))
str8 = r'\t123\nabc\\aaa\u4e00'
str9 = R'\t123\nabc\\aaa\u4e00'
print(str8)
print(str9)

3.字符编码

1.计算机数据存储
  • 计算机在存储数据的时候,只能直接存储数字数据,而且以二进制的形式存储的数字。
  • 位(bit)(0,1)
    1字节(byte) == 8 位
    1KB == 1024字节
    1MB == 1024kb
    1GB== 1024Mb
    1t==1024Gb
2.字符编码
  • 1)字符编码
    为了能够计算机存储字符,我们给每个字符关联一个具体的数字,在需要存储字符的时候就存储字符对应的数字,
    每个字符对应的数字就是字符的编码值。
  • 2)编码表
    每个字符和数字的一一对应关系的表就是字符编码表,常用的字符编码表有两种:ascII编码表、Unicode编码表
    a. ascII编码表:
    采用1个字节对128个字符进行编码,其中包括常用的英文符号,数字和字母。其他数字的编码在字母的前面,大写字母的编码在小写字母的前面,大写子母和小写字母不连续
    b. Unicode编码表:
    叫万国码包含了世界上所有国家所有民族的所有语言的符号,前128个字符就是ASCII,其中中文的编码范围是:4eoo~9fa5
  • 练习:
1.编码字符:\u四位的16进制数 (这儿的4位的16进制数就是字母的编码值)
str1 = 'a\u0061'  # 0061是97的16进制数
print(str1)  # aa
print('\u4e00\u4e01')  # 一 丁

2.chr函数
 chr(编码值) - 获取编码值对应的字符,将编码值转换成字符。
print(chr(97))
print(chr(0x4e00))

练习:打印所有的汉子
for x in range(0x4e00, 0x9fa5):  (加0x是因为16进制,重点看一下)
 print(chr(x), end='')

3.ord函数
ord(字符串)  获取字符的编码值(获取到的是10进制的)
print(ord('余'), ord('婷'))
print(hex(ord('余')), hex(ord('婷')))  # (加hex转换成16进制编码)
print(hex(0))

print(ord('a'), ord('z'), ord('A'), ord('Z'))

4.相关操作

1.字符串获取字符
  • 1)和列表获取元素的方法是一样的
str1 = '人生苦短,我用python!'
print(str1[5])
str2 = 'how are\n you!'  # 空格也算一个字符???
print(str2[-4], str2[9])  # y
  • 2)切片
message = '曾经有一份真挚的爱情'
print(message[1:])  #
    1. 遍历
message2 = ' 你以为我以为就是你以为的'
for x in message2:
    print(x)
message3 = 'you jump, i jump'
for x, y in enumerate(message3):
    print(x, y)
# 练习1:打印message3中每个字符的编码值
message3 = 'you jump, i jump'
for x in message3:
    print(ord(x))
# 练习2:统计message4中中文字符的个数
message4 = 'how are you ? 我很好!你呢?'
count = 0
for x in message4:
    if ord(x) in (0x400, 0x9fa5):
        count += 1
    if 0x4e00 <= ord(x) <= 0x9fa5:
        count += 1
print(count)

2.加法和乘法计算

字符串1+字符串2 - 将两个字符串合并产生一个新的字符串
str1 = ‘abc’ + ‘123’

字符串 * N/N * 字符串 - 字符串重复N此产生一个新的字符串
str2 = ‘abc’ * 3

3…比较运算:

== 相同的要完全相同,字符串是有序的

>,< ,>=,<=

两个字符串比较大小比较的是第一对不相等的字符的编码值的大小
判断一个字符是否是小写字母:‘a’ <= x <= ‘z’
判断一个字符是否是大写字母:‘A’ <= x <= ‘Z’
判断一个字符是否是字母:‘a’ <= x <= ‘z’ or ‘A’ <= x <= ‘Z’
判断一个字符是否是数字字符:‘0’ <= x <=‘9’
判断一个字符是否是中文字符:’\u4e00’ <= x<=’\u9fa5’

  • 练习:
练习:取出字符串中所有的小写字母       (重点看一下)
str3 = 'hu23,a后仅剩lor23可HMp见'
new_str = ''
for x in str3:
    if 'a' <= x <= 'z':
        new_str += x
print(new_str)

  练习2:将字符中所有的小写字母转换成大写字母   (重点看一下)
new_str = 'HU23,A后仅剩LOR23可HMP见'
str3 = 'hu23,a后仅剩lor23可HMp见'
new_str = ''
for x in str3:
    if 'a' <= x <= 'z':
        x = chr(ord(x) - 32)
    new_str += x
print(new_str)
4.in和not in
  • 字符 in 字符串 - 判断字符串中是否有指定字符
    字符串1 in 字符串2 -判断字符串2中是否包含字符串1

猜你喜欢

转载自blog.csdn.net/xinxing66/article/details/107672520
今日推荐