Python小技巧

#列表推导

# 列表推导
l = [x for x in range(10)]
#  集合推导
s = {x for x in range(10)}
# 字典推导
d = {xx/2 for x in range(10)}

#计数器

这个很有用!!!不用自己遍历了!

from collections import Counter

count = Count("hello world")

#输出结果
# count = Count({ l : 3,  o : 2,    : 1,  e : 1,  d : 1,  h : 1,  r : 1,  w : 1})
# c.most_common(2)
# [( l , 3), ( o , 2)]

#FizzBuzz

一个很经典的题目:

写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。


我自己设计的话,肯定是循环和if 啦!!!

for x in range(1,101):
    print("fizz"[x%3*len('fizz')::]+"buzz"[x%5*len('buzz')::] or x)

涉及的知识点有点多,操作有点666!!!

print语句的单行判断输出

srt的切片

[::]的用法

至于为什么会有*len('fizz')len('buzz')*目的是为了保证只要余数不为0那么起始索引必须大于字符长度就行。

#print包含单行if语句

print('A' if 1 else 'B')

#数值的比较

a = 5 
# 其实不太常用
if 1<a>4:
    print(a)  

#同时迭代两个列表

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
     print(teama + " vs. " + teamb)

***zip()***是内置函数,用户很多的。

# 带索引的列表迭代

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
    print(index, team)

enumerate这个函数其实使用不多。

#初始化列表

l = [0]*3

用过MALTAB的人大概知道这种用法。

在python中批量打印其实也用的较多。

#列表转字符串--敲黑板!!!!!

l = ['as',  'sad',  'assad',  'sadfas']
s = ','.join(l)

此方法效率非常高!!!!!!!!!!!!!!!!!

对于大量字符串拼接的采用此方法效果很好!

#迭代工具

from itertools import combinations
l = [1, 2, 3, 4]
for i in combinations(teams, 2):
    print(i)

其实就是个回归的,自己写也可以。

#False == True --> 沙雕操作

False = True
if False:
    print(True)

因为Fasle和True在python中也是变量,所以可以赋值。

但是真要是这么写容易被打死。

updatedupdated2021-07-012021-07-01