目录
1、字符串' '
字符串的定义
字符串的遍历操作
字符串的拼接替换
字符串的切片
字符串的检索
字符串的大小写转换和特殊字符去除
1-1小案例:生成随机验证码
2、列表 [ ]
列表的创建、删除与遍历
列表的增删改操作
列表翻转和排序
3、元组 ( )
4、字典 {键值对}
5、集合 { }
6、序列中的一些公共方法
7、推导式
列表推导式
字典推导式
集合推导式
# 字符串的定义
str1 = ‘ ’
str1 = ” “
str1 = ''' ''' #长字符串可以实现换行
#注意:Python解释器是就近原则,引号必须成对出现
str1 = " I'm Tom" #可以单双引号交叉使用
str1 = ’I \'m Tom' #也可以使用转义字符\
# 字符串的遍历操作,使用for循环 或while循环
str1 = 'abcdefg'
for i in str1:
print(i)
i = 0 #因为索引从0开始
while i < len(str1):
print(str1[i])
i += 1
# 拼接字符串 ‘ + ’
str3 = str1 + str2
# join 多个字符串合并为一个新的字符串
指定字符.join(要连接的元素序列)
a ='-'
b = '热烈欢迎'
print(a.join(b)) #热-烈-欢-迎
# 以字符串b为基准,以 b的第一个字符 + 指定字符 + b的第二个字符 + 指定字符.....
#replace 返回替换后的字符串
str1.replace(旧字符串,新字符串,替换次数)
# 计算字符串长度 len
len(str1)
# 切片,截取字符串 同样是只顾头不顾尾,左闭右开
# 索引下标 从0开始,通过索引下标获取字符串中的字符
str1[start : end : step]
# 步长为负则逆向移动,从右向左,注意起始位置和结束位置相应的写法
## 如果起始位置和结束位置都是负数,且步长为正数,则起始位置和结束位置必须是从左到右
str1[-4:-1]
## 无起始位置无结束位置,只有负步长,可以实现字符串的翻转
str1[::-1]
# 分割字符串 split,返回列表
str.split(sep, maxsplit)
# sep:指定的分隔符,默认为None maxsplit:指定的分割次数,不指定或者为-1则没有次数限制
# 如果不指定sep参数,那也不能指定maxsplit参数
# 检索字符串
## 检索指定字符出现的次数 count
str.count(sub[,start[,end]])
# sub 要检索的字符串,start检索范围的起始位置,不指定就从头开始,end结束位置,默认一直检索到结尾
## 检索是否包含指定的字符串 find,如果存在返回索引,不存在返回-1
str.find(sub[,start[,end]])
str.rfind()
## 检索是否包含指定的字符串 index , 如果存在返回索引,不存在会抛出异常
str.index(sub[,start[,end]])
str.rindex()
## 检索是否以指定字符串开头 startswith 如果是返回True,否False
str.startswith(sub[,start[,end]])
## 检索是否以指定字符串结尾 endswith 如果是返回True,否False
str.endswith(sub[,start[,end]])
# 字母的大小写转换
str.lower()
str.upper()
str.title() #首字母大写
# 去除字符串中的空格和特殊字符
## 去掉左右两侧的空格和特殊字符,chars为指定要去除的字符,可指定多个,不指定则默认去除空格、换行符、回车等
str.strip([chars])
## 去掉左侧的空格和特殊字符
str.lstrip([chars])
## 去掉右侧的空格和特殊字符
str.rstrip([chars])
#生成随机的验证码
mystr = 'abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456789'
print(len(mystr)) # 59
import random
# 设置存放验证码的序列
code =''
#生成4位的验证码
for i in range(4):
#筛选随机数
index = random.randint(0,len(mystr)-1)
#因为用的是索引,索引是从0开始的,虽然mystr的长度是59,但是索引号只到58,所以要长度-1
#如果不-1的话,随机到多余的索引会找不到对应的字符,导致出错
#根据索引得到相应的字符
#print(mystr[index])
code += mystr[index]
print(code)
# 列表的创建和删除
listname = [元素1, 元素2, 元素3]
emptylist = []
del listname
# 列表的储存结构与字符串类似,默认从0开始对每个元素进行编号
# 与for循环结合,遍历输出
for i in listname:
print()
# 列表中有多少个元素就会循环多少次
# 每次循环,系统会自动取出一个列表元素放入临时变量
# 或
for index, j in enumerate(listname):
print(index, j) # 输出索引与对应的元素
# 判断元素在不在列表里 in ; not in
# 列表嵌套,一个列表中包含了其他的子列表
listname1 = [[list1], [list2], [list3]]
# 嵌套列表元素的访问,先从最外层访问再看内层的
listname1[1][1]
###列表增删改操作
listname = [元素1, 元素2, 元素3]
# 增加元素
# append() 在列表末尾追加元素;
listname.append(object)
# insert()在列表指定位置添加元素;
listname.insert(index, object)
# extend() 将一个列表的全部元素添加到另一个列表
listname.extend(seq)
# 注意如果添加的是字符串
listname.extend('pythin') # 会把字符串拆开,出现 listname的元素,p,y,t,h,i,n这样的情况
# 修改元素,通过索引获取并直接赋值
listname[2] = ' '
# 删除元素
# 根据索引
del listname[2]
# 根据元素值删除,remove()
listname.remove(value)
# 删除指定下标数据,并返回该数据 pop() 默认删除最后一个
delname = listname.pop()
# 清空列表 clear()
# 统计计算
# 获取指定元素出现的次数 count()
listname.count()
# 获取指定元素首次出现的下标 index()
listname.index()
# 列表元素和 sum()
sum(listname[, start])
# 对列表排序 sort() 主要针对数值;sorted() 排序后不改变原列表的元素顺序
listname.sort(key, reverse=False / True) # 升序 /降序
sorted(listname) #
# 对列表进行翻转reverse(),也可以用索引-1
listname.reverse()
listname[::-1]
#元组(),功能与列表类似,都可以用来存储数据,但元组里面的数据不能修改,数据可以是不同的数据类型
##不能对单个元组元素的修改 ==> 但可以对元组重新赋值
#元祖的创建与删除
#创建
tuplename = (元素1,元素2,....) #如果创建只包含1个元素的元组,要在元素1后加,;
# 有时,多个元素后有,号,但没有小括号,也认为是元组
tuplename1 ='元素1', '元素2','原素'
#空元组
emptytuple = ( )
#删除
del tuplename
##访问元组元素,元组[索引]
tuplename[0]
tuplename.index() #返回元素的索引
tuplename.count() #统计元素出现次数
len(tuplename) #数据个数
# 字典的特征 里面的数据以键值对的形式表示
# 1,通过键而不是索引来读取,键是唯一的且不可变
# 2,字典是任意对象的无序集合,可变,且可以任意嵌套
# 字典的创建与删除
dict1 = {'key1': 'value', 'key2': 'value', ..., 'keyn':'valuen'}
# 空字典
dict1 = {}
dictionary = dict()
# 创建值为空的字典
dictionary = dict.fromkeys(list1)
dictionary = dict(zip(list1, list2))
dictionary = dict(key1=value1, key2=value2, ...)
# 删除
del dictionary
# 删除元素
del dictionary['key']
#可以删除最后一个键值对
dict1.popitem()
# 访问字典元素
dictionary['key1']
# 获取指定键的值
dictionary.get(key, [default]) # default用来指定 指定的键不存在时返回的默认值
# 遍历字典
dictionary.items()
for key, value in dictionary.items():
print(key, ':', value)
# 以列表返回所有key的值
dictionary.keys()
# 以列表返回所有value的值
dictionary.values()
# 添加与修改元素
dictionary[key] = value
# 如果新添加元素的键已存在,那么就相当于就该键对应的值进行修改
列表+字典的组合
###如果数据类型是列表+字典,即 list = [{key:value},{key:value}]形式
##查找指定的元素,可以使用 for i in list: (此时会将list的元素一个一个放入i中,i就变成了字典
## 再通过i[key] == 查找的内容 来判断这个元素在不在列表里
# 集合 用来保存不重复元素,有可变(set) 和 不可变(frozenset)两种
# 集合的创建 {}
setname = {元素1, 元素2, 元素3}
setname = set(对象)
# 不可以使用{}创建空的集合,因为这是创建的字典
# 集合可以快速进行去重,但集合不支持下标
#集合中的遍历方式只有1中: for循环
# 集合的添加和删除
# 添加元素 add() 增加单一的元素
setname.add(元素)
# 增加序列类型的元素 update()
setname.update() #注意,如果直接update('str'),这种直接写的字符串最后添加进去时也会被拆开添加
# 删除元素
del setname # 删除整个集合
setname.pop() # 随机删除元素,并返回删除的元素
setname.remove() # 删除指定元素,指定内容不存在会抛出异常
setname.clear() # 清空元素
setname.discard() # 与remove类似,但删除的元素不存在时不会报错
##集合的运算
# 交集运算 &
set1 & set2
# 并集运算 |
set1 | set2
# 差集运算 -
set1 - set2
数据结构 | 是否可变 | 是否重复 | 是否有序 | 定义符号 |
---|---|---|---|---|
列表 | 可变 | 可重复 | 有序 | [ ] |
元组 | 不可变 | 可重复 | 有序 | ( ) |
字典 | 可变 | 可重复 | 无序 | {key:value} |
集合 | 可变 | 不可重复 | 无序 | { } |
运算符 | 描述 | 支持的序列类型 |
---|---|---|
+ | 合并 | 字符串、列表、元组 |
* | 复制 | 字符串、列表、元组 |
in | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 元素是否不存在 | 字符串、列表、元组、字典 |
函数 | 描述 | 支持的序列类型 |
len() | 计算序列中的元素个数 | 字符串、列表、元组、字典、集合 |
del 或del() | 根据下标删除序列中的的元素 | 列表、元组、字典、集合 |
max() | 返回序列中最大的元素 | 都可以,但除字符串外其他序列内容要是同一种数据类型,要么都是数,要么都是字符串 字典返回的最大值对应的键 |
min() | 返回序列中最小的元素 | 同上 |
range(start, end,step) |
生成从start到end(不包含)的 数字,步长为step, 供for循环使用 |
都可以 |
enumerate() |
将一个可遍历的数据对象组合为 一个键值对结构序列,同时列出数据和下标 一般用在for循环中 |
都可以 for i,j in enumerate(序列): print(i,j) |
序列转换函数 | 描述 | 适用序列对象 |
list() | 将序列对象转换为列表 | 元组、字典(只保留了key的值)、集合 |
tuple() | 将序列对象转换为元组 | 字符串、列表、字典、集合 |
set() | 将序列对象转换为集合(会自动去重,且没有下标,数据会被打散) | 字符串、列表、元组、字典 |
推导式又称解析式,是Python独有的特性。推导式可以从一个数据序列构建另一个新的数据序列(一个有规律的序列)的结构体。
# 三种推导式 : 列表/ 集合/ 字典
## 列表推导式
变量名 = [表达式 for 变量 in 列表]
变量名 = [表达式 for 变量 in 列表 if 条件]
变量名 = [表达式 for 变量 in 列表 for 变量 in 列表]
# 案例:定义0-9之间的列表
list1 = [i for i in range(10)]
# 案例:定义0-9之间的偶数列表
list12= [i for i in range(10) if i % 2 == 0]
# 创建列表 ==> [(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list3 = [(i,j) for in range(1,3) for j in range(0,3)]
## 字典推导式
## 快速合并列列表为字典或提取字典中目标数据
变量 = {key : value for key,value in 序列}
# 案例:创建一个字典,key是1-5,value是key的平方
dict1 = {i : i**2 for i in range(1,6)}
# 合并两个列表 {'name': 'zhangsan', 'age': 23}
list1 = ['name','age']
list2 = ['zhangsan',23]
dict2 = {list1[i]:list2[i] for i in range(len(list1))}
#提取字典中目标数据 值大于200的 {'MBP': 200, 'IP': 210}
counts = {'MBP':200,'AMP':24,'IP':210,'SOP':189}
si = {i:j for i,j in counts.items() if j >= 200}
# 注意要使用items遍历
和列表推导式很相似,可以用集合推导式来去重