Python笔记3 - 数据序列

目录

1、字符串' '

字符串的定义

字符串的遍历操作

字符串的拼接替换

字符串的切片

字符串的检索

字符串的大小写转换和特殊字符去除

1-1小案例:生成随机验证码

2、列表 [ ] 

列表的创建、删除与遍历

列表的增删改操作

列表翻转和排序

3、元组 ( )

4、字典 {键值对}

5、集合 { }

6、序列中的一些公共方法

7、推导式

列表推导式

字典推导式

集合推导式​​​​​​​


1、字符串' '

字符串的定义

# 字符串的定义
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])

1-1小案例:生成随机验证码

#生成随机的验证码
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)

2、列表 [ ] 

列表的创建、删除与遍历

# 列表的创建和删除
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]

3、元组 ( )

#元组(),功能与列表类似,都可以用来存储数据,但元组里面的数据不能修改,数据可以是不同的数据类型
##不能对单个元组元素的修改 ==> 但可以对元组重新赋值

#元祖的创建与删除
#创建
tuplename = (元素1,元素2,....)  #如果创建只包含1个元素的元组,要在元素1后加,;
# 有时,多个元素后有,号,但没有小括号,也认为是元组
tuplename1 ='元素1', '元素2','原素'
#空元组
emptytuple = ( )
#删除
del tuplename

##访问元组元素,元组[索引]
tuplename[0]
tuplename.index() #返回元素的索引
tuplename.count() #统计元素出现次数
len(tuplename) #数据个数

4、字典 {键值对}

# 字典的特征  里面的数据以键值对的形式表示
# 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] == 查找的内容  来判断这个元素在不在列表里

5、集合 { }

# 集合 用来保存不重复元素,有可变(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}
集合 可变 不可重复 无序 { }

6、序列中的一些公共方法

常见公共方法
运算符 描述 支持的序列类型
+ 合并 字符串、列表、元组
* 复制 字符串、列表、元组
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() 将序列对象转换为集合(会自动去重,且没有下标,数据会被打散) 字符串、列表、元组、字典

7、推导式

推导式又称解析式,是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遍历

集合推导式

和列表推导式很相似,可以用集合推导式来去重

你可能感兴趣的:(笔记,python,笔记)