循环控制

# 指定起始点
for i in range(1, 10)  
# 指定步长
for i in range(1, 10,2)  
# 使用range()函数来创建一个列表:
list(range(5))  # [0,1,2,3,4]
# pass语句
while True:
        pass # 占位符 为了弥补没有空分号的缺陷

py可以对循环语句使用else

count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")
'''
输出结果
0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5
'''

常用TIPS

一行输入多个数据

m,n=map(int, input().split()) # 一行内输入多个数据
a=list(map(int,input().split()))
a=[0]+list(sorted(map(int,input().split())))

push_back

ans=[]
for i in a:
    ans.append(i%26) # 

try-except多组输入

try:
    while True:
        s,mod = map(str,input().split())
        Sum = 0
        for i in s:
            Sum = (Sum*26+ord(i)-97)
        Sum += int(mod)
        if Sum >= 308915776:
            print(-1)
            continue
        ans=''
        for i in range(6):
            ans += chr(Sum%26+97)
            Sum //= 26
        print(ans[::-1])
except:
    pass

切片

>>>a=[1,2,3,4,5]
>>>print(a)
[ 1 2 3 4 5 ]
>>>print(a[:-1])  ## 除了最后一个取全部
[ 1 2 3 4 ]
>>>print(a[::-1]) ## 取从后向前(相反)的元素
[ 5 4 3 2 1 ]
>>>print(a[2::-1]) ## 取从下标为2的元素翻转读取
[ 3 2 1 ]

格式化输出

print('%.2f' % ans)

其实.format()是更新的方案
https://www.runoob.com/python3/python3-inputoutput.html

几个代码段

mod = 1000000007
n = int(input())
p = [0] + list(map(int, input().split()))
dp = [[0] * (n + 1) for _ in range(n + 1)]
dp[0][0] = 1
for i in range(1, n + 1) :
    for j in range(i + 1) :
        dp[i][j] = (dp[i - 1][j] * (mod + 1 - p[i]) % mod + (dp[i - 1][j - 1] * p[i] % mod if j else 0)) % mod
print(' '.join(map(str, dp[n])))

join的使用

str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
# a-b-c

排序/set

import math
n = 100
factory = [1]
for i in range(2, int(math.sqrt(n)) + 1):
    if (n % i == 0):
        factory.append(i)
        if (i * i != n):
            factory.append(n // i)
print(sorted(factory))
import math
thisset = set(("Google", "Runoob", "Taobao"))  # set创建
n = 100
factory = {1}
for i in range(2, int(math.sqrt(n)) + 1):
    if (n % i == 0):
        factory.add(i)
        if (i * i != n):
            factory.add(n // i)
print(sorted(factory))
print(factory)
print(sorted(factory, key=lambda x: x*-1))  #倒序
print(sorted(factory, reverse=True)

sorted 的应用,也可以通过 key 的值来进行数组/字典的排序,比如:

array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)

Output

[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]

先按照成绩降序排序,相同成绩的按照名字升序排序:

d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
l = sorted(d1, key=lambda x:(-x['score'], x['name']))
print(l)

Output

[{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]