非数据类型变量:列表和字符串

目录:
一.列表
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 in range(5):                      # range(12) 生成12位随机密码
    rand = random.randint(0len(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"
# 获取最右边“\” 的位置
= url.rfind('/')
# 获取最右边“\” 的文件名
filename = url[a+1::]
print(filename)
# 去掉扩展名
= 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
 
    = 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 切割,切割后放到列表中
= "hello world hello kitty"
result = s.split(" ")
print(result)
 
result1 = s.split(" "2)    # 最多切两次
print(result1)
 
# count 出现次数
print(s.count('o'))

 
posted @ 2023-01-09 22:23  妖孽成佛  阅读(63)  评论(0)    收藏  举报