1 元组
-
什么是元组
1)元组是容器型数据类型;将()作为容器的标志,里面多个元素用逗号隔开。🌸
(数据1,数据2,数据3,...)
2)元组是不可变的(不支持增删改);有序的(支持下标操作)
3)元素:没有要求
4)空元组🌸
t=()
-
只有一个元素的元组在表示的时候唯一的元素后面必须加逗号。
t1 = (10) print(t1, type(t1)) #10 <class 'int'> t2 = (10,) print(t2, type(t2), len(t2)) #(10,) <class 'tuple'> 1
-
在没有歧义的情况下,元组的()可以省略。(直接将多个数据用逗号隔开表示的也是一个元组)
t3 = 10, 20, 30 print(t3, len(t3)) #(10, 20, 30) 3 t4 = (10, 20, 30) print(t4, len(t4)) #(10, 20, 30) 3 t5 = (10, 20, 30) * 2 print(t5, len(t5)) #(10, 20, 30, 10, 20, 30) 6
-
解包
使用多个变量直接获取元组、列表中的多个元素。
t6 = (1, 2, 3) print(t6[0], t6[1], t6[2]) #1 2 3 x, y, z = t6 print(x, y, z) #1 2 3
-
元组是不可变的列表。
t7 = (10, 20, 30) print(t7[-1]) #30 print(t7[1:]) #(20, 30) print(t7 * 2, t7 + (1, 200)) #(10, 20, 30, 10, 20, 30) (10, 20, 30, 1, 200) print(10 in t7) #True print((10, 20, 30) > (1, 200, 100)) #True
2 字符串
-
什么是字符串(str)
1)字符串是容器型数据类型(字符串对应的容器只能保存多个文字符号,即字符)。将’ '或者" "作为容器的标志,里面的每个符号就是字符串中每个元素。
2)不可变的(不支持增删改),有序的(支持下标操作)
3)元素要求:引号中的每个符号都是字符串的元素(任何文字符号都可以是字符串的元素),字符串的元素又叫字符。
注意:字符串的元素(字符)分为两种:
1、普通字符(符号在字符串中表示它本身)
2、转义字符(符号在字符串中有特殊功能,或者特殊意义,不能表示符号它本身)
str1 = 'abc' str2 = "abc" # 多行字符串,可以任意换行 str3 = '''abc''' str4 = """abc"""
多行注释只有在特定的位置上才是注释。
在pycharm中,IntelliJ Light主题下,注释颜色是呈灰色的,字符串的颜色是呈绿色,有着明显的区分。
-
字符串特点
1)字符串不可变,所有的可变操作都是在创建对应的新的字符串。
str1 = 'mua' new_str1 = str1.upper() print(str1, new_str1) #mua MUA
2)字符串有序。
print('abc' == 'bca') #False
3)任何文字符号都可以是字符串的元素。
str2 = 'shi30.,02🍔🍜🥤' print(str2) #shi30.,02🍔🍜🥤
4)普通字符。
str3 = 'akc逆' print(str3) #akc逆
5)\t是转义字符。
str4 = 'a\tbd123' print(str4) #a bd123
3 字符
字符串中每个独立的符号就是字符。
-
转义字符
转义字符是由\和另外一个或者多个符号一起组合而成(转义字符一定是\开头)。
在特定的符号前加上\,让这个符号在字符串中具有特殊的功能或者特殊意义的字符就是转义字符。
转义字符有些是固定的(并不是随便一个字符前加\都可以变成转义字符)。
转义字符 意义 ASCII(十进制) \n 换行 010 \t 制表符tab 009 \\ 反斜杠\ 092 ’ 单引号’ 039 " 双引号" 034 str1 = '\t\t《江上值水如海势聊短述》\n\t\t\t\t唐·杜甫\n\t为人性僻耽佳句,语不惊人死不休。\n\t老去诗篇浑漫与,春来花鸟莫深愁。\n\t新添水槛供垂钓,故着浮槎替入舟。\n\t焉得思如陶谢手,令渠述作与同游。' print(str1) str1 = 'It\'s me' print(str1) str1 = "It's me" print(str1) 结果: 《江上值水如海势聊短述》 唐·杜甫 为人性僻耽佳句,语不惊人死不休。 老去诗篇浑漫与,春来花鸟莫深愁。 新添水槛供垂钓,故着浮槎替入舟。 焉得思如陶谢手,令渠述作与同游。 It's me It's me
-
r/R字符串
在字符串的引号前加r或R。
如果表示字符串的时候,在字符串前加r或R,可以让字符串中所有的转义字符功能消失。
str1 = r'abc' print(str1) #abc str2 = R'abc' print(str2) #abc str3 = '\tabc\n123' str4 = r'\tabc\n123' print(str3) print(str4) 结果: abc 123 \tabc\n123
写路径时最常用。
-
编码字符(所有的字符都可以表示成编码字符)
\u+四位的十六进制数
str1 = '\u4e00abc-\u8fce' print(str1) #一abc-迎
进制数 组成 例子 10进制数 由0-9组成 100,25 2进制数 由0和1组成 0b1001 8进制数 由0-7组成 0o77 16进制数 由0-9和a-f(A-F)组成 0x89 2、8、16进制数写时加前缀0b、0o、0x用以与十进制(0d可省略)区分。
4 字符编码
-
计算机存储数据只能存数字(计算机只具备存储数字的能力)。
为了能够让计算机保存文字信息,就给每一个文本符号对应一个固定的数字,每次在需要存储这个文本符号时,就存储这个符号对应的数字。这个数字就叫这个符号的编码值。
-
编码表
保存每个符号对应的编码值的表。
1)ASCII码表
总共有128个字符对应的编码值,主要包含:常用的英文符号、数字字符和字母。
记忆🍼:A-65,a-97
2)Unicode编码表
Unicode编码表中包含ASCII表。
Unicode编码表又叫统一码、万国码,它包含了世界上所有国家所有民族的所有语言的符号。
记忆🍼:中文编码:4e00-9fa5
print(0x9fa5-0x4e00) #20901
-
编码值的应用
1)chr(编码值) 获取指定编码值对应的字符
print('\u4e00') #一 print(chr(97)) #a print(chr(0x9fa5)) #龥
2)ord(字符) 获取指定字符对应的编码值(编码值以十进制的方式返回值)
注意:字符,长度为1的字符串
print(ord('a')) #97 print(ord('钰'), ord('t')) #38064 116
🌰将小写字母转换成大写字母
c1 = 'm' print(chr(ord(c1) - 32)) #M
3)hex(数字) 将数字表示成16进制数
print(hex(38064)) #0x94b0
-
编码字符
在字符串中表示字符的方式有两种:直接提供字符,也可以提供一个编码字符。
\u+四位的16进制编码值
str1 = 'a一' str2 = '\u0061\u4e00' print(str1, str2) #a一 a一
🌰判断c2保存的字符是否是中文。
c2 = 'n' if '一' <= c2 <= '\u9fa5': print(c2, '是中文') else: print(c2, '不是中文') 结果:n 不是中文
🌰判断c2保存的字符是否是大写字母。
c2 = 'a' if 'A' <= c2 <= 'Z': print('是大写字母') else: print('不是大写字母') 结果: 不是大写字母
🌰两个字符串比较大小比较的是第一对不相等的字符的编码值的大小。
print('abc' > 'Ukij') #True
5 字符串基本操作
-
查
字符串获取元素和列表获取元素的语法一模一样。
字符串没有增删改操作。
mess = 'hello 你好!' print(mess[0], mess[-1], mess[4]) #h ! o print(mess[1:-1:2]) #el 好 for i in mess: print(i) for i, item in enumerate(mess): print(i, item, end='') 结果: 0 h1 e2 l3 l4 o5 6 你7 好8 !4
列表切片结果是列表,字符串切片结果是字符串。
-
+、*
1)字符串1+字符串2 将两个字符串合并,产生一个新的字符串。
2)字符串*N 字符串重复N次产生一个新的字符串。
str1 = 'abc' str2 = '123' str3 = str1 + str2 print(str3) #'abc123' str4 = str1 * 2 print(str4) #'abcabc'
-
in 和 not in
1)字符串1 in 字符串2 判断字符串2是否包含字符串1
2)字符串1 not in 字符串2 判断字符串2是否不包含字符串1
str1 = 'hello' print('a' in str1) #False print('h' in str1) #True print('lo' in str1) #True print('ho' in str1) #False
🌰案例:统计str1中中文的个数。
str1 = '换手机hss8223Kks是sjd==222' count1 = 0 for i in str1: if '一' <= i <= '\u9fa5': count1 += 1 print(count1) #4
🌰案例:提取字符串中所有的大写字母。
str2 = '涉及到MJk230023sjkU293shT==MJUT' str3 = '' for i in str2: if 'A' <= i <= 'Z': str3 += i print(str3) 结果:MJUTMJUT