Python高级

Python高级

字符串

获取字符串中元素

和列表一样,字符串也是通过索引获取元素

str="hello"
print(str[0])

遍历字符串

可以通过for循环遍历字符串

str = 'hello'
for ele in str:
    print(ele)
h
h
e
l
l
o

字符串的常见操作

判断
方法说明
isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True
isdecimal()如果 string 只包含数字则返回 True
startwith(str)检查字符串是否是以 str 开头,是则返回 True
endswith(str)检查字符串是否是以 str 结束,是则返回 True
查找替换
方法说明
find(str, start=0, end=len(string))检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
rfind(str, start=0, end=len(string))类似于 find(),不过是从右边开始查找
replace(old_str, new_str, num=string.count(old))返回一个新字符串,把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次
str="hello"
#find(str, start=0, end=len(string))
print(str.find('lo',0,len(str)))
#rfind(str, start=0, end=len(string))
print(str.rfind('lo',0,len(str)))
#replace(old_str, new_str, num=string.count(old)) 如果不指定替换的个数num,则默认都替换
print(str.replace("l","L",1))
切割
方法说明
split(str="", maxsplit)返回列表,以 str 为分隔符拆分 string,如果 maxsplit 有指定值,则仅分隔 maxsplit + 1 个子字符串,str 默认包含\\r, \\t, \\n空格
str2="1|2|3"
print(str2.split('|'))
print(type(str2.split('|')))
['1', '2', '3']
<class 'list'>
去空白
方法说明
strip()返回新字符串,截掉 string 左右两边的空白字符(可以指定截掉的字符)
str3="   hello   "
print(str3.strip())

set集合

set被称为集合,是无序的,并且集合中的元素是唯一的

集合的创建

s = {'张三','李四','王五'}
print(s)

集合是无序的

打印结果:

{'李四', '张三', '王五'}

集合元素唯一

s = {'张三','李四','王五','张三'}
print(s)

打印结果:

{'王五', '张三', '李四'}

遍历集合

s = {'张三','李四','王五'}
# 遍历集合
for ele in s:
    print(ele)

添加元素

集合可以通过add方法添加元素

s = {'张三','李四','王五'}
# # 添加赵六 add
s.add('赵六')

删除元素

remove删除,如果有 直接删除,如果没有 程序报错

s = {'张三','李四','王五'}
# 删除张三 
s.remove('张三')

discard删除(安全),元素存在则直接删除,如果元素不存在,则不做任何操作

s = {'张三','李四','王五'}
# discard 删除元素 如果元素不存在,不做任何处理
s.discard('林青霞')

pop删除,随机删除集合中的元素并返回,如果集合中没有元素,则程序报错

s = {'张三','李四','王五'}
# pop 随机删除
print(s.pop())

dict字典

  • 字典同样可以用来存储多个数据
  • 字典使用键值对存储数据

定义

d = {'中国':'China','英国':'England','美国':'America'}

字典的特点

字典中的相当于索引,必须是唯一的

d = {'中国':'China','英国':'England','美国':'America','美国':'USA'}
print(d)

打印:

{'中国': 'China', '英国': 'England', '美国': 'USA'}

字典增删改查

增加
d = {'中国':'China','英国':'England','美国':'America'}
# 添加 法国
d['法国'] = 'France'

也可以通过setdefault方法添加

d.setdefault('法国','France')

如果字典中原来存在这个key,则添加后会覆盖

删除
d = {'中国':'China','英国':'England','美国':'America'}
# 删除美国 如果键不在字典中,会报错
del d['法国']

也可以通过pop删除

# pop 删除元素 并且返回删除元素的值 如果删除不存在会报错
result = d.pop('法国')

清空字典

# 清空容器中的数据  还可以继续使用
d.clear()
修改
d = {'中国':'China','英国':'England','美国':'America'}
# 修改美国
d['美国'] = 'USA'
查询
d = {'中国':'China','英国':'England','美国':'America'}
# 查找中国
value = d['中国']
print(value)

字典遍历

1、遍历所有的键值对

d = {'中国':'China','英国':'England','美国':'America'}

for ele in d:
    print(ele,d[ele])

结果:

中国 China
英国 England
美国 America

2、遍历所有的键

d = {'中国':'China','英国':'England','美国':'America'}
for key in d.keys():
    print(key)

结果:

中国
英国
美国

3、遍历所有的值

d = {'中国':'China','英国':'England','美国':'America'}

for value in d.values():
    print(value)

结果:

China
England
America

4、遍历所有的键值对

d = {'中国':'China','英国':'England','美国':'America'}
for key,value in d.items():
    print(key,value)

结果:

中国 China
英国 England
美国 America

slice切片

取一个strlisttuple的部分元素

  • 切片 译自英文单词slice,指的是一部分
  • 切片 根据 步长step** **从原序列中取出一部分元素组成新序列
  • 切片适用于 字符串、列表、元组

格式

字符串[开始索引:结束索引:步长]

包含开始索引, 不包含结束索引

string = '中华人民共和国欢迎您'
# 获取前三个文字
newStr = string[0:3:1]

步长默认为1,可以省略,如下

newStr = string[0:3]

开始索引为0,可以省略,如下

newStr = string[:3]

如果到末尾结束,可以省略结束索引,例如取后三个字“欢迎您

newStr = string[7:]

索引的正序和倒序

索引分为正序和倒序

  • 正序:从左向右,0开始
  • 倒序:从右向左,-1开始
# 开始位置:正序  结束位置:倒序
str="中华人民共和国欢迎你"
print(str[7:-1])

打印结果:

欢迎

步长为负数

步长也可以为负数,代表逆序切片

ss = "中华人民共和国欢迎您"
# 把从角标为2到7(包含)倒序打印出来
# 欢国和共名人
print(ss[7:1:-1])

打印结果:

欢国和共民人

推导式

推导式指的是轻量级循环创建数据的方式,对列表或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。

推导式包括:

  • 列表推导式
  • 元组推导式
  • 集合推导式
  • 字典推导式

列表推导式

列表推导式的格式:[计算公式 for循环 if判断]

通过列表推导式快速创建[1, 11)所有数字的列表

lst=[i for i in range(0,11)]
print(lst)

通过列表推导式快速创建[1, 11)所有偶数的列表

lst=[i for i in range(0,10) if i%2==0 ]
print(lst)

通过列表推导式快速创建[1, 11)所有偶数的平方的列表

lst=[i**2 for i in range(0,10) if i%2==0 ]
print(lst)

元组推导式

元组推导式的格式:**(计算公式 for循环 if判断)**,其他与列表推导式一致

tp  =(ele for ele in range(1, 11))

集合推导式

集合推导式的格式:**{计算公式 for循环 if判断}**,其他与列表推导式一致

s = {ele for ele in range(1, 11)}

字典推导式

zip(..., ...)range(1,10)range(21,30)里的每个元素一一组合成元组

z=zip(range(0,10),range(21,33)) #如果两边位数不相等,以位数少的为准
print(list(z))
[(0, 21), (1, 22), (2, 23), (3, 24), (4, 25), (5, 26), (6, 27), (7, 28), (8, 29), (9, 30)]

所以字典推导式为

z=zip(range(0,10),range(21,33))
_dict={key:value for key,value in list(z)}
print(_dict)

内置函数

高级变量类型有一些公共的内置函数,如下

函数描述备注
len(items)计算容器中元素个数
del item删除变量
max(items)返回容器中元素最大值字典只比较key
min(items)返回容器中元素最小值字典只比较key

len 长度

str = 'hello'
print(len(str))

结果:

5

del 删除

lst = [1,2,3]
del lst[0]
print(lst)

结果:

[2,3]

运算符

运算符描述支持的数据类型
+合并字符串、列表、元组
*重复字符串、列表、元组
in是否存在(字典中判断键)字符串、列表、元组、集合、字典
not in是否不存在(字典中判断键)字符串、列表、元组、集合、字典
> >= == < <=比较(==以外的较少使用,逐个比较元素)字符串、列表、元组

innot in

str = 'hello'
# h是否在str中
result = 'h' in str
print(result)
result = 'h' not in str
print(result)

结果:

True
False

+合并

只有字符串、列表、元组可以合并

  • 字符串
# 字符串
str1 = 'hello'
str2 = 'world'
str = str1 + str2
  • 列表
lst1 = [1,2,3]
lst2 = [4,5,6]
lst = lst1 + lst2
  • 元组
t1 = (1,2,3)
t2 = (4,5,6)
t = t1 + t2

* 重复

只有字符串、列表、元组可以

str = 'hello'
print(str*3)

l = [1,2,3]
print(l * 3)

t = (1,2,3)
print(t * 3)

结果:

hellohellohello
[1, 2, 3, 1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值