Day 8 元组,集合,字符串
1.元组
1. 什么是元组?(tuple)
元组是容器(序列),将()作为容器的标志,里面多个元素用逗号隔开:(元素1,元素2,元素3,…)
2.元组作为容器的特点
1)不可变的(不支持增,删,改)
1.查:列表获取元素的方法元组都支持
t1 = (10, 20, 30,'True',[1,2],{
'a':100})
print(t1,type(t1)) #(10, 20, 30, 'True', [1, 2], {'a': 100}) <class 'tuple'>t1 = (10, 20, 30,'True',[1,2],{
'a':100})
print(t1[1]) # 20
print(t1[3:]) # ('True', [1, 2], {'a': 100})
2.元组特有的或者常用的一些操作
1)只有一个元素的元组:必须在唯一的元素后面加逗号
t2 = (10)
print(t2, type(t2)) # 10 <class 'int'>(不是元组形式)
t2 = (10,)
print(t2, type(t2)) # (10,) <class 'tuple'>
2)在没有歧义的情况下,元组的小括号可以直接省略(直接将多个元素用逗号隔开,也是表示一个元组)
t3 = (10.20.30)
print(t3, type(t3))
t4 = 10,20,30
print(t4, type(t4))
3)可以通过变量的个数和元组中元素的个数保持一致,来获取元组中的每个元素
point = (100, 'abc')
print(point[0], point[1]) # 100 abcx, y = point
print(x, y) # 100 abc
如果变量个数比元组中元素少,要在其中一个变量前加星号,其他变量正常按顺序取值,剩下的元素以列表的形式返回给带星号的变量
t4 = (10, 'True', [1, 2], {
'a':100})
x1, x2, *x3 = t4
print(x1, x2, x3) # 10 True [[1, 2], {'a': 100}]t4 = (10, 'True', [1, 2], {
'a':100})
*x1, x2, x3 = t4
print(x1, x2, x3) # [10, 'True'] [1, 2] {'a': 100}
2)有序的(支持下标操作)
3)元素的要求和列表一样(元组就是不可变的列表)
2.集合
1.什么是集合?(set)
集合是容器(序列),将{}作为容器的标志,里面多个元素用逗号隔开:{元素1,元素2,元素3,…}
2.集合作为容器的特点
可变的,无序的
元素的要求:不可变的;唯一的
1.空集合
s1 = set()
print(type(s1),len(s1)) # <class 'set'> 0
2.证明集合中元素不可变
s1 = {
10, True, 'abc', (1, 2)}
print(s1) # {True, 10, (1, 2), 'abc'}
s2 = {
10, True, 'abc', [1, 2]}
print(s2) # TypeError: unhashable type: 'list'(报错)
3.集合无序
s1 = {
10, True, 'abc', (1, 2)}
print(s1) # {True, 10, (1, 2), 'abc'}
4.元素唯一
s3 = {
1, 2, 3, 4, 1, 2, 3, 1, 2, 3}
print(s3) # {1, 2, 3, 4}(自动去重)
5.集合自带去重功能
scores = [45, 67, 56, 78, 98, 45, 56]
new_scores =list(set(scores))
print(new_scores) # [98, 67, 45, 78, 56]
3.数学集合运算:交集,并集,差集,对称差集,子集,真子集
1)交集(&)—求两个集合的公共部分
n1 = {
1, 2, 3, 4, 5, 6,7}
n2 = {
5, 6, 7, 8, 9}
result = n1 & n2
print(result) # {5, 6, 7}
2)并集(|)------合并两个集合
n1 = {
1, 2, 3, 4, 5, 6,7}
n2 = {
5, 6, 7, 8, 9}
result = n1 | n2
print(result) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
3)差集(-)----集合1-集合2—> 集合1中除了包含在集合2中以外的部分
n1 = {
1, 2, 3, 4, 5, 6, 7}
n2 = {
5, 6, 7, 8, 9}
result = n1 - n2
print(result) # {1, 2, 3, 4}
4)对称差集 (^) ——两个集合合并然后去掉公共部分
n1 = {
1, 2, 3, 4, 5, 6, 7}
n2 = {
5, 6, 7, 8, 9}
result = n1 ^ n2
print(result) # {1, 2, 3, 4, 8, 9}
5)子集(>= ,<=) ----
s1 = {
100, 200, 300, 400}
s2 = {
1, 2}
print(s1>s2) # False
s3 = {
100, 200, 300, 400, 1, 2}
s4 = {
1, 2}
print(s3>s4) # True
6)真子集(>, <)
3.用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
3.字符串
1.什么是字符串?
字符串是容器(序列),将’’,"","""""",’’’’’'作为容器的标志,在引号中的每一个符号都是字符串的元素,(字符串的元素又叫字符)
#写注释的时候最好用# ,否则就是字符串
2.’‘和""没有区别,’’’’’'和""""""也没有区别
注:’‘和""""引起来的字符串内容不能直接通过回车换行,’’’’’'和""""""引起来的字符串内容可以直接通过回车换行
str = 'abc' \'123'
str = """abd123"""
3.字符串作为容器的特点
1)不可变(所以所有字符串相关的可变操作全部都会产生一个新的字符串)
2)有序的,支持下标操作(切片,遍历)
3)字符串中的元素(字符):通过任何手段可以放入引号中的符号都可以是字符串的元素
4.字符
字符分为普通字符和转义字符两种
1)普通字符
除了转义字符以外的都是普通字符
2)转义字符—在一些特定符号前加 \ 在字符串中表示一些具有特殊功能或者特殊意义的符号。
\n —— 换行
str = 'aba\n123'
print(str) # aba# 123\t ——水平制表符(相当于按一次Tab键)```py
str = 'aba\t123'
print(str) # aba 123
\’ ——表示一个单引号
\" ——表示一个双引号
str = 'aba\'123\"87'
print(str) # aba'123"87
\\ ——表示一个反斜杠(使反斜杠变得普通)
str = 'aba\\n123\\t87'
print(str) # aba\n123\t87
\u四位的十六进制编码值——将编码值转化成对应的字符
str1 = 'abc\u4e80123'
print(str1) # abc亀123
5.电脑中的字符编码
1.字符在计算机中的存储问题(编码值)
计算机只能存数字,所以为了能够保存字符,给每一个字符对应一个固定的数字,每次需要保存字符的时候直接保存字符对应的数字。
每个符号对应的固定数字就是这个字符的编码值
2.编码表
记录字符和编码值之间一一对应关系的表,常见的编码表有两种分别是:ASCII码表和Unicode编码表
1)ASCII码表
总共有128(2**7)个字符,表中,数字字符在大写字母的前面,大写字母在小写字母的前面,大写字母和小写字母之间有其他字符
2)Unicode编码表
Unicode编码表对ASCII编码表进行了扩充,它记录了世界上所有国家,民族,语言的符号。
中文的编码范围:4e00 ~ 9fa5
3.编码值的使用
1)\u编码值(4位16进制值)
print('\u4e07') # 万
2)char(编码值)------获取编码值对应的字符
for x in range(0x4e80, 0x4f00):print(chr(x), end = ' ')
# 亀 亁 亂 亃 亄 亅 了 亇 予 争 亊 事 二 亍 于 亏 亐 云 互 亓 五 井 亖 亗 亘 亙 亚 些 亜 亝 亞 亟 亠 亡 亢 亣 交 亥 亦 产 亨 亩 亪 享 京 亭 亮 亯 亰 亱 亲 亳 亴 亵 亶 亷 亸 亹 人 亻 亼 亽 亾 亿 什 仁 仂 仃 仄 仅 仆 仇 仈 仉 今 介 仌 仍 从 仏 仐 仑 仒 仓 仔 仕 他 仗 付 仙 仚 仛 仜 仝 仞 仟 仠 仡 仢 代 令 以 仦 仧 仨 仩 仪 仫 们 仭 仮 仯 仰 仱 仲 仳 仴 仵 件 价 仸 仹 仺 任 仼 份 仾 仿
3)ord(字符) ----获取字符对应的编码值
print(ord('贺'), ord('芳')) # 36154 33459
print(hex(ord('贺')), hex(ord('芳'))) # 0x8d3a 0x82b3
4)字符串比较大小
print('abc' > 'ABCDEF') # True
比较第一对不相等的字符的编码值的大小。(两个字符串同位置上的字符是一对)