一天一个小知识--python版
一天一个小知识–python
zip()压缩可迭代对象,’*'号解压可迭代对象
- 可迭代对象才可以使用*号拆分;
- 带*号变量严格来说并不是一个变量,而更应该称为参数,它是不能赋值给其他变量的,但可以作为参数传递;
解包
# 在输出时使用'*'号对列表元素进行解包
# 例如:一维列表
a=[1,2,3,4]
print(*a)
# 输出样例
# 1
# 2
# 3
# 4
# 二维列表
a=[[1,2,3],[4.5.6],[7,8,9]]
print(*a)
# 输出样例
# [1,2,3]
# [4,5,6]
# [7,8,9]
压缩
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
字符串替换特定字符
例题:牛客-好串问题(NC21874)
题目描述
牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串x插入另一个字符串y中(包括放在开头和结尾)
牛牛认为如果一个串是好的当这个串能按照如下方法被构造出来:
一开始,有一个空串,然后执行0次或者若干次操作,每次操作将ab插入当前的字符串
根据上面的定义,ab, aabb, aababb都是好串,aab,ba,abbb并不是好串
现在给你一个字符串s,判断s是否是好串
输入描述:
输入一行包含一个字符串,长度不超过50
输出描述:
输出"Good" 或者 "Bad"
示例1:输入
ab
输出
Good
# 解
# import re
s=input()
while ('ab' in s) :
s=s.replace('ab', '')
# 注意一定要使用变量储存结果,不然不会保存
# 或者
# s=re.sub('ab','',s) # 要求同上
if len(s)==0:
print('Good')
else:
print('Bad')
Python strip()方法
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
语法
str.strip([chars]);
# -*- coding: UTF-8 -*-
str = "00000003210Runoob01230000000"
print str.strip( '0' ) # 去除首尾字符 0
str2 = " Runoob " # 去除首尾空格
print (str2.strip())
# 以上实例输出结果如下:
# 3210Runoob0123
#Runoob
Python设置跳出多重循环
- 自定义异常
class Getoutofloop(Exception):#自定义跳出多重循环异常
pass
try:
for i in range(5):
for j in range(5):
if :#终止条件
raise Getoutofloop()
else:
print (i, '----', j)
except Getoutofloop:
pass
# try容易导致运行时间变长的现象,不太推荐(个人观点,大佬勿喷!!!)
- 封装函数
def test():
for i in range(5):
for j in range(5):
if :#循环终止条件
return
else:
print (i, '----', j)
test()
# 将循环封装在函数内部,比较推荐
for …else…结构
for i in range(5):
for j in range(5):
for k in range(5):
if :#终止条件
break
print (i, '----', j, '----', k)
else:
break
else:
break
else:
break # break根据需求进行变改方案相对灵活
url编码——urllib.parse库使用
- 使用
quote()函数进行编码和使用unquote()函数进行解码
from urllib.parse import quote, unquote
print("编码结果为:" + quote('字符串', '原字符串编码格式'))
print("解码结果为:" + unquote('字符串', '目标字符串编码格式'))
json的树状视图输出
from json import dumps
c=jsonObject
dumps(c,indent=4,sort_keys=True,ensure_ascii=False).encode().decode('utf-8')
ACwing__3804. 构造字符串
给定一个长度为 n 的由小写字母构成的字符串 s。
请你构造一个长度为 k 的由小写字母构成的字符串 t。
要求,字符串 t 需满足:1.字符串 t 在字典序上大于字符串 s。
2.字符串 t 的字母集是字符串 s 的字母集的子集。一个字符串的字母集是指该字符串包含的所有不同字母的集合,例如 abadaba 的字母集为 {a,b,d}。
3.字符串 t 在字典序上尽可能小。保证答案存在。
import bisect # bisect --- 数组二分查找算法,https://docs.python.org/zh-cn/3/library/bisect.html
T = int(input())
for _ in range(T):
n, k = map(int, input().split())
s = input()
us = set(s)
cs = list(us) #所有的字母。数组中
cs.sort()
cn = len(cs)
min_c = min(us) #最小的字母
if k <= n:
t = s[:k]
t = list(t)
for i in range(k - 1, -1, -1):
c = t[i]
ID = bisect.bisect_right(cs, c)
if 0 <= ID < cn:
y = cs[ID]
t[i] = y
break
else:
t[i] = min_c
if n < k:
t = s + ''.join([min_c for _ in range(k - n)])
res = ''.join(t)
print(res)
#大佬的题解链接:https://www.acwing.com/solution/content/62413/
python在腾讯云函数添加库的方案

本文介绍了如何使用Python的zip()函数压缩可迭代对象,以及如何通过'*'号进行解压操作。此外,还讲解了字符串替换特定字符的方法和Python strip()的用法。同时,涵盖了Python设置跳出多重循环的不同策略,如自定义异常、封装函数和for...else结构。最后,涉及url编码、json视图输出和腾讯云函数库的添加方法。
&spm=1001.2101.3001.5002&articleId=119494332&d=1&t=3&u=6dbff3ce00fb461b83ff63637bf005d8)
1795

被折叠的 条评论
为什么被折叠?



