126xy 发表于 2022-10-6 13:01

Python学习——非数据类型变量:列表和字符串

目录:
一.列表
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.定义
list_1 = [] # 空列表
list_2 = list() # 空列表

print(type(list_1), type(list_2))   # <class 'list'> <class 'list'>

name_list = ["张三", "李四", "王五"]

# 索引
print(name_list)
# 超出索引范围,会报错 IndexError:list index out of range
# print(name_list)

# 查看每个元素的索引值
print(id(name_list), id(name_list), id(name_list))


2.list的操作方法
(1)下标操作

[*]索引->值:列表[索引]
[*]值->索引:列表.index(值)
# 列表的下标操作
name_list = ["zhangsan", "wangwu", "lisi"]
name_list = '王五'
print(name_list)
print(name_list.index('zhangsan'))


(2)增加数据

[*]列表.append(数据)
[*]列表.insert(索引,数据)
[*]列表.extend(列表二)——等价于 +=
# 增加数据
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 列表
# 删除元素
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    # 将 name_list 从内存中删除
print(name_list)
# del name_list   # 将 name_list 从内存中删除

(4)统计

[*]len(列表) 统计列表的元素——字符串、元组、字典、集合也适用
[*]列表.count(数据) 统计数据在列表中出现了几次
# .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() 逆序
# 排序
num_list =
# .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
list_1 = ["lala", "miaomiao", "kk", "dd", "lv"]

for item in list_1:
    print(item + ".docx")



二.字符串
1.定义
# 值和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)切片操作——也适用于列表和元组,不适用于字典
# 不仅适用于字符串,也适用于列表和元组,不适用于字典
filename = 'picture.png'
print(filename)

# 切片操作
# str      +和 1都是默认的
print(filename)
print(filename[:7:+1])# 起始值0可以省略
print(filename[:7])
print(filename[:7:2])

# 取负数值: 负数表示倒数第几个
print(filename)# 从第二个开始取值,取到倒数第一个之前
# [::]的用法:
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)大小写相关的操作

[*]字符串.captitalize() 字符串的第一个字符变大写
[*]字符串.title() 返回 每个单词的首字母大写的 字符串
[*]字符串.upper() 全部大写
[*]字符串.lower() 全部小写
[*]字符串.istitle() 若所有单词首字母大写,其余小写,则返回真

# 大小写相关
# 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)大小写操作练习——验证码
"""
根据系统提示输入验证码,不用考虑大小写
"""
# 产生一组验证码(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

print(auth_code)

# 根据验证码,自己输入,不用判断大小写
user_code = input("请输入五位验证码:")

if auth_code.lower() == user_code.lower():
    print("输入正确")
else:
    print("验证码输入错误")

(4)查找 find和rfind# 查找: find 和 rfind
# find(要查找的字符, start, end)

# 获取链接中的文件名
url = "http://www.baidu.com/img/bd_logo.png"
# 获取最右边“\” 的位置
a = url.rfind('/')
# 获取最右边“\” 的文件名
filename = url
print(filename)
# 去掉扩展名
b = filename.rfind('.')
filename2 = filename[:b:]
print(filename2)
(5)替换 replace# 替换: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()# 编码    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)查找练习——判断上传文件的格式"""
练习:
给定一个路径,上传文件(记事本txt或者是图片.jpg,png)
如果不是对应格式的,允许重新执行上传文件
如果符合上传的规定则提示上传成功
"""
while True:
    # 分析步骤
    # 要上传的文件的路径 ---》文件名---》通过文件名再判断是否是图片类型
    path = input("请输入文件:")# C:\Users\karl_\Desktop\text.txt

    p = path.rfind(".")
    # print(p)
    suffix = path
    # print(suffix)

    if suffix in ['txt', 'jpg', 'png']:
      print('输入的格式正确')
      break
    else:
      print("格式不正确")
(8)join(合并)strip(去掉空格)split(切割)count(出现次数)# 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'))


练习代码下载地址:https://wwt.lanzoul.com/i9HS80dacxla
页: [1]
查看完整版本: Python学习——非数据类型变量:列表和字符串