非数据类型变量:列表和字符串
目录:
一.列表
1.列表的定义
(1)空列表
(2)索引
2.list的操作方法
(1)下标操作
(2)增加数据
(3)删除数据
(4)统计
(5)排序
(6)循环 for in
二.字符串
1.定义
2.操作
(1)切片操作——也适用于列表和元组,不适用于字典
(2)大小写相关的操作
(3)大小写操作练习——验证码
(4)查找 find和rfind
(5)替换 replace
(6)编码和解码 encode()和decode()
(7)查找练习——判断上传文件的格式
(8)join(合并)strip(去掉空格)split(切割)count(出现次数)
一.列表
1.定义
2.list的操作方法
(1)下标操作
(2)增加数据
(3)删除数据
(4)统计
(5)排序
(6)循环 for in
二.字符串
1.定义
2.操作
(1)切片操作——也适用于列表和元组,不适用于字典
(2)大小写相关的操作
(3)大小写操作练习——验证码
(4)查找 find和rfind
(5)替换 replace
(6)编码和解码 encode()和decode()
(7)查找练习——判断上传文件的格式
(8)join(合并)strip(去掉空格)split(切割)count(出现次数)
一.列表
1.列表的定义
(1)空列表
(2)索引
2.list的操作方法
(1)下标操作
- 索引->值:列表[索引]
- 值->索引:列表.index(值)
(2)增加数据
- 列表.append(数据)
- 列表.insert(索引,数据)
- 列表.extend(列表二)——等价于 +=
(3)删除数据
- 列表.remove(值)
- 列表.pop(索引) 默认删除列表最后一个元素
- 列表.clear() 清空列表,但列表仍存在
- del关键字
- 删列表元素:del 列表[索引]
- 删列表:del 列表
(4)统计
- len(列表) 统计列表的元素——字符串、元组、字典、集合也适用
- 列表.count(数据) 统计数据在列表中出现了几次
(5)排序
- 列表.sort() 升序排序
- 列表.sort(reverse = True) 降序排序
- 列表.reverse() 逆序
(6)循环 for in
二.字符串
1.定义
2.操作
(1)切片操作——也适用于列表和元组,不适用于字典
(2)大小写相关的操作
- 字符串.captitalize() 字符串的第一个字符变大写
- 字符串.title() 返回 每个单词的首字母大写的 字符串
- 字符串.upper() 全部大写
- 字符串.lower() 全部小写
- 字符串.istitle() 若所有单词首字母大写,其余小写,则返回真
(3)大小写操作练习——验证码
(4)查找 find和rfind
(5)替换 replace
(6)编码和解码 encode()和decode()
(7)查找练习——判断上传文件的格式
(8)join(合并)strip(去掉空格)split(切割)count(出现次数)
一.列表
1.定义
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
list_1 = [] # 空列表 list_2 = list () # 空列表 print ( type (list_1), type (list_2)) # <class 'list'> <class 'list'> name_list = [ "张三" , "李四" , "王五" ] # 索引 print (name_list[ 0 ]) # 超出索引范围,会报错 IndexError:list index out of range # print(name_list[3]) # 查看每个元素的索引值 print ( id (name_list), id (name_list[ 0 ]), id (name_list[ 1 ])) |
2.list的操作方法
(1)下标操作
- 索引->值:列表[索引]
- 值->索引:列表.index(值)
[Python] 纯文本查看 复制代码
1
2
3
4
5
|
# 列表的下标操作 name_list = [ "zhangsan" , "wangwu" , "lisi" ] name_list[ 2 ] = '王五' print (name_list) print (name_list.index( 'zhangsan' )) |
(2)增加数据
- 列表.append(数据)
- 列表.insert(索引,数据)
- 列表.extend(列表二)——等价于 +=
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
# 增加数据 name_list.append( 'alex' ) # 在列表最后增加元素 print (name_list) # 通过下标,插入元素 name_list.insert( 2 , 'Bob' ) # 原本之后的元素,往后移 print (name_list) # extend 等价于 += name_list1 = [ '小猫' , '小狗' , 'zhangsan' ] name_list.extend(name_list1) print (name_list) # name_list += name_list1 |
(3)删除数据
- 列表.remove(值)
- 列表.pop(索引) 默认删除列表最后一个元素
- 列表.clear() 清空列表,但列表仍存在
- del关键字
- 删列表元素:del 列表[索引]
- 删列表:del 列表
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
# 删除元素 name_list.remove( 'alex' ) # 前提是列表里面有这个元素 print (name_list) # .pop name_list.pop() # 默认删除列表的最后一个元素 print (name_list) name_list.pop( 1 ) # .pop(index) print (name_list) # .clear 清空列表,但列表还在 #name_list.clear() print (name_list) # del 关键字 del name_list[ 1 ] # 将 name_list[index] 从内存中删除 print (name_list) # del name_list # 将 name_list 从内存中删除 |
(4)统计
- len(列表) 统计列表的元素——字符串、元组、字典、集合也适用
- 列表.count(数据) 统计数据在列表中出现了几次
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
|
# .len(列表) 统计列表的元素 # len Return the number of items in a container # 字符串、列表、元组、字典、集合也适用 num = len (name_list) print (num) # .count(数据) 统计数据出现了几次 name_list.count( "zhangsan" ) |
(5)排序
- 列表.sort() 升序排序
- 列表.sort(reverse = True) 降序排序
- 列表.reverse() 逆序
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
# 排序 num_list = [ 3 , 2 , 7 , 6 , 8 , 5 , 1 , 4 ] # .sort()升序排序 num_list.sort() #num_list.sort(reverse=True) # 降序排序,true代表reverse生效,false代表不生效 print (num_list) # .reverse() 逆序 num_list.reverse() print (num_list) |
(6)循环 for in
[Python] 纯文本查看 复制代码
1
2
3
4
|
list_1 = [ "lala" , "miaomiao" , "kk" , "dd" , "lv" ] for item in list_1: print (item + ".docx" ) |
二.字符串
1.定义
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
# 值和id都一样 s1 = "abc" s2 = 'abc' s3 = """abc""" s4 = '''abc''' print (s1 is s2) # 比较id print (s1 is s3) print (s1 is s4) print ( id (s1), id (s2), id (s3)) print (s1 = = s2) print (s1 = = s3) print (s1 = = s4) # in 成员运算符 name = 'steven' result = 'st' in name # 返回值是bool 类型 True False print (result) result = 'tev' not in name print (result) |
2.操作
(1)切片操作——也适用于列表和元组,不适用于字典
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 不仅适用于字符串,也适用于列表和元组,不适用于字典 filename = 'picture.png' print (filename[ 6 ]) # 切片操作 # str[start:end:方向(+/-)/步长] +和 1都是默认的 print (filename[ 0 : 7 : + 1 ]) print (filename[: 7 : + 1 ]) # 起始值0可以省略 print (filename[: 7 ]) print (filename[: 7 : 2 ]) # 取负数值: 负数表示倒数第几个 print (filename[ 2 : - 1 ]) # 从第二个开始取值,取到倒数第一个之前 # [::]的用法: print (filename[::]) # 正序输出 print (filename[:: - 1 ]) # 从右往左取值,即倒序输出 print (filename[ - 1 : - 5 : - 1 ]) # 不包含 -5 str1 = "hello world" # 逆序输出 world print (str1[ - 1 : - 6 : - 1 ]) # 正向输出 hello print (str1[: 5 :]) # 逆序输出 hello world print (str1[:: - 1 ]) # 打印 llo wo print (str1[ 2 : 8 :]) |
(2)大小写相关的操作
- 字符串.captitalize() 字符串的第一个字符变大写
- 字符串.title() 返回 每个单词的首字母大写的 字符串
- 字符串.upper() 全部大写
- 字符串.lower() 全部小写
- 字符串.istitle() 若所有单词首字母大写,其余小写,则返回真
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
# 大小写相关 # capitalize() 字符串第一个字符变大写 message = "andy is a beautiful girl !" message1 = message.capitalize() print (message1) # title() 返回 每个单词的首字母大写 的字符串 message2 = message.title() print (message2) # upper() 全部大写 message3 = message.upper() print (message3) # lower() 全部小写 message4 = message.lower() print (message4) # 如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False. message5 = message.istitle() print (message5) |
(3)大小写操作练习——验证码
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
""" 根据系统提示输入验证码,不用考虑大小写 """ # 产生一组验证码(5个字母或数字) import random # 随机 codes = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890' auth_code = "" # print(len(codes)) for i in range ( 5 ): # range(12) 生成12位随机密码 rand = random.randint( 0 , len (codes) - 1 ) auth_code + = codes[rand] print (auth_code) # 根据验证码,自己输入,不用判断大小写 user_code = input ( "请输入五位验证码:" ) if auth_code.lower() = = user_code.lower(): print ( "输入正确" ) else : print ( "验证码输入错误" ) |
(4)查找 find和rfind
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
# 查找: find 和 rfind # find(要查找的字符, start, end) # 获取链接中的文件名 url = "http://www.baidu.com/img/bd_logo.png" # 获取最右边“\” 的位置 a = url.rfind( '/' ) # 获取最右边“\” 的文件名 filename = url[a + 1 ::] print (filename) # 去掉扩展名 b = filename.rfind( '.' ) filename2 = filename[:b:] print (filename2) |
(5)替换 replace
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
|
# 替换:replace s1 = "index lucy lucky goods" s2 = s1.replace( 'l' , 'L' ) # 把 l 替换成 L print (s2) s3 = s1.replace( 'l' , 'L' , 1 ) # 最多替换 1 次 print (s3) s4 = s1.replace( ' ' , '') print (s4) |
(6)编码和解码 encode()和decode()
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
|
# 编码 encode() # 将文本类型的数据转换成二进制 # msg = "http://www.baidu.com/img/bd_logo1.png" msg = "床前明月光" msg1 = msg.encode(encoding = 'utf-8' ) print (msg1) # 解码 decode() 用于人机交互 msg2 = msg1.decode() print (msg2) |
(7)查找练习——判断上传文件的格式
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
""" 练习: 给定一个路径,上传文件(记事本txt或者是图片.jpg,png) 如果不是对应格式的,允许重新执行上传文件 如果符合上传的规定则提示上传成功 """ while True : # 分析步骤 # 要上传的文件的路径 ---》文件名---》通过文件名再判断是否是图片类型 path = input ( "请输入文件:" ) # C:\Users\karl_\Desktop\text.txt p = path.rfind( "." ) # print(p) suffix = path[p + 1 :] # print(suffix) if suffix in [ 'txt' , 'jpg' , 'png' ]: print ( '输入的格式正确' ) break else : print ( "格式不正确" ) |
(8)join(合并)strip(去掉空格)split(切割)count(出现次数)
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# join strip split count # join 合并 str1 = 'abc' str2 = '_' .join(str1) print (str2) # strip 去掉空格 str3 = ' abcd ' print (str3) str4 = str3.strip() print (str4) # 去掉前面(lstrip)或后面(rstrip)的 whitspace(空格、tab) str5 = str3.lstrip() str6 = str3.rstrip() print (str5, str6) # split 切割,切割后放到列表中 s = "hello world hello kitty" result = s.split( " " ) print (result) result1 = s.split( " " , 2 ) # 最多切两次 print (result1) # count 出现次数 print (s.count( 'o' )) |