记录工作中用到的python编程小知识。
目录
- 1.牛客网获取输入输出
- 2.颠倒字符串
- 3.迭代与递归
- 4.进制
- 5.str.join() 参数仅一个,是一个序列
- 6.strip lstrip rstrip sys.stdin与input()
- 7.print("\t",end=' ');
- 8.有序字典
- 9.大写小写/输出字母后的第5个字母/字符转ascii/ascii转字符
- 10.enumerate(a)
- 11.lambda
- 12.是否是数字 字母
- 13.列表合并
- 14 列表去重不乱序
- 15 一些lambda+排序,灵活且可自定义
- 16 map() 映射
- 17.endwith()
- 18. 当元组只包含一个元素时,要以逗号结尾,否则为原本数据类型
- 19 filter过滤函数/reduce累积函数
- 20.zfill()
1.牛客网获取输入输出
import sys
s = sys.stdin.readlines()
#按照上面的代码,那么s就等于如下:
#s = ['2\n','0 0\n','2 2\n']
记住列表里的每个元素都会带一个换行符,用strip()处理掉然后split然后把每个元素用int转成整数就可以了
input().split() #就是按空格分割的一个字符串类型的list
#以及
for line in sys.stdin:
另:https://blog.csdn.net/qq_39283195/article/details/90577000
2.颠倒字符串
a="3432535541787"
1:
print(a[::-1])
2:
b=list(a)
b.reverse()
print(''.join(b))
3:
c=len(a)-1
str_1=[]
while(c>=0):
str_1.append(a[c])
c -=1
print(''.join(c))
3.迭代与递归
递归(recursion)
:递归常被用来描述以自相似方法重复事物的过程,在数学和计算机科学中,指的是在函数定义中使用函数自身的方法。(A调用A)
迭代(iteration)
:重复反馈过程的活动,每一次迭代的结果会作为下一次迭代的初始值。(A重复调用B)
递归
是一个树结构,从字面可以其理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历。
迭代
是一个环结构,从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态
4.进制
10转2: a = bin(b)
10转8:a = oct(b)
10转16:a = hex(b)
int():
2转10:int(),注意引号 ,因为二进制是一个字符串
#结果是4
int('100',2)
8转10:int(),注意引号 ,因为八进制是一个字符串
#结果是4
int('04',8)
16转10:int(),注意引号,因为十六进制是一个字符串
int('0x4',16)
5.str.join() 参数仅一个,是一个序列
ori = ''
sq = (str(item[0]),' ',str(item[1]),' ',str(item[2]))
print(ori.join(sq))
#output:0 25 75
ori = ' '
sq = (str(item[0]),str(item[1]),str(item[2]))
print(ori.join(sq))
#output:0 25 75
join作用:将序列sq中的字符串和ori字符串交叉组合,以上两种结果相同
6.strip lstrip rstrip sys.stdin与input()
sys.stdin与input
:
sys.stdin.readline( )会将标准输入全部获取,包括末尾的’\n’,因此用len计算长度时是把换行符’\n’算进去了的,但是input( )获取输入时返回的结果是不包含末尾的换行符’\n’的。
因此如果在平时使用sys.stdin.readline( )获取输入的话,不要忘了去掉末尾的换行符,可以用strip( )函数(sys.stdin.readline( ).strip(’\n’))或sys.stdin.readline( )[:-1]这两种方法去掉换行。
也可以用split()直接获得除空格之外的值
s.strip(rm)
删除 s 字符串中开头、结尾处,位于 rm 删除序列的字符
s.lstrip(rm)
删除 s 字符串中开头处,位于 rm 删除序列的字符
s.rstrip(rm)
删除 s 字符串中结尾处,位于 rm 删除序列的字符
7.print("\t",end=’ ');
‘ ’替换自动换行
8.有序字典
from collections import orderedDict
dict_test = orderedDict() #然后其余用法和dict{}一致
9.大写小写/输出字母后的第5个字母/字符转ascii/ascii转字符
str = "www.runoob.com"
print(str.upper()) # 把所有字符中的小写字母转换成大写字母
print(str.lower()) # 把所有字符中的大写字母转换成小写字母
print(str.capitalize()) # 把第一个字母转化为大写字母,其余小写
print(str.title()) # 把每个单词的第一个字母转化为大写,其余小写
字符转ascii/ascii转字符:
https://blog.csdn.net/cunchi4221/article/details/107475661
10.enumerate(a)
11.lambda
12.是否是数字 字母
13.列表合并
两个别表合并为一个列表:l1.extend(l2)
两个列表合并为一个字典:d = dict(zip(y, x))
两个列表交叉合并:
from itertools import chain
result = list(chain.from_iterable(zip(str1,str2)))
#注意:如果str1和str2长度不同,则会舍弃长度较长的那一列剩下的元素
14 列表去重不乱序
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)
l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)
15 一些lambda+排序,灵活且可自定义
#对char_list排序
char_list.sort(key = lambda c:c.lower())
count_d = sorted(count_d.items(),key= lambda item:item[1],reverse=True)
res.sort(key=lambda item:item[1]-item[0])
16 map() 映射
https://www.runoob.com/python/python-func-map.html
data = list(map(int,input().split()))
tmp = ' '.join(map(str,res[i]))
17.endwith()
是否以指定字符串结尾
if data.endwith(n):
18. 当元组只包含一个元素时,要以逗号结尾,否则为原本数据类型
如 type((1))输出为int
19 filter过滤函数/reduce累积函数
filter:
test = [1,2,3,4,5,6,7,8,9]
t = filter(lambda x:x%2==0,test)
for i in t:
print(i)
reduce:
def add(x, y) : # 两数相加
return x + y
sum1 = reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
print(sum1)
print(sum2)
20.zfill()
自动填零
tmp = '124'
print(tmp.zfill(5))
#00124
青古の每篇一歌
《是风动》
是风动 还是幡动
轮回难道就不同