09. 集合及其操作, 字符编码

一、集合及其操作

1.介绍

  • 作用:

     ① 去重(集合内不可能出现相同的元素)
     ② 关系运算
     用集合就是用上面这两个功能,如果用不上那就不要使用集合
    
  • 特点:

      ① 无序
      ② 元素必须是不可变元素
      ③ 元素不能重合
    
  • 类型转换
    能够被for循环遍历的类型都可以被转换成集合

ss = set('hello')
print(ss)  # {'l', 'o', 'h', 'e'}
res = ''.join(ss)
print(res)  # lohe

  • 定义空集合
    一定要用关键字set
    如:
ss = set()

2.常用操作

 对于下面s1和s2两个集合做一些操作
s1 = {'aaa', 'bbb', 'ccc', 'ddd'}
s2 = {'ccc', 'ddd', 'eee', 'fff'}

2.1 求交集

res = s1 & s2
print(res)  # {'ddd', 'ccc'}

2.2 求并集

res = s1 | s2
print(res)  # {'aaa', 'ccc', 'eee', 'ddd', 'bbb', 'fff'}

2.3 求差集

res = s1 - s2
print(res)  # {'bbb', 'aaa'}

2.4 求对称差集

res = s1 ^ s2
print(res)  # {'eee', 'bbb', 'fff', 'aaa'}

2.5 父、子集
一个集合包含另一个集合才会有

s1 = {1, 2, 3}
s2 = {1, 2}
print(s1 > s2)  # True,代表s1是s2的父集
print(s2 < s1)  # True,代表s2是s1的子集

3.常用操作

3.1循环

for item in {1,2,3}:
	print(item) 

3.2 update
括号里面的对象必须可以被for循环遍历(列表、元组、字符串等,字典只能往集合里增加key,字符串会被拆成一个个“字符”)

s1 = {333, 222, 111}
s1.update({'aaa', 'bbb'})
print(s1)  # {'aaa', 'bbb', 333, 222, 111}

3.3 clear

清空集合,得到空集合 set()

3.4 pop
随机删除
返回值为删除的那个值

ss = {1,2,3}
res = ss.pop()
print(ss)  # {1, 3}
print(res)  # 2

3.5 remove
指定元素删除
返回值为None

ss = {1,2,3}
res = ss.remove(3)
print(ss)  # {1, 2}
print(res)  # None

3.6 discard
指定元素删除,返回值为None
与remove不同的是,如果指定的元素不存在,不会报错

s1 = {333, 222, 111}
res = s1.discard("aa")
print(s1)  # {333, 222, 111}   与remove不同的是,如果删除的值不存在,运行不会报错
print(res)  # None

3.7 add
只能添加一个值,添加多个值会报错

s1 = {333, 222, 111}
s1.add("aaa")
print(s1)  # {'aaa', 333, 222, 111} 

3.8 isdisjoint
用法:s1.isdisjoint(s2)
判断两个集合是否为没有交集,若没有就返回True,有交集就返回False

s1 = {333, 222, 111}
s2 = {"aaa", "bbb"}
print(s1.isdisjoint(s2))  # True

4. 集合类型总结

无序
能存多个值
set集合属于可变类型

二、字符编码

  • ASCII
    美国信息交换标准代码,全称 American Standard Code for Information Interchange
    ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

    0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),
    如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;
    通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
    ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响

    32~126(共95个)是字符(32是空格),其中:
    48~57为0到9十个阿拉伯数字。
    65~90为26个大写英文字母,
    97~122号为26个小写英文字母,
    其余为一些标点符号、运算符号等。
    常见ASCII码的大小规则:0 ~ 9 < A ~ Z < a ~ z

  • GBK

    GBK全称《汉字内码扩展规范》,英文名称:Chinese Internal Code Specification
    GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,
    其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,
    完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,
    并包含了BIG5编码中的所有汉字。

  • Unicode

    Unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界标准,
    包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,
    它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
    1990年开始研发,1994年正式公布。
    Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值