Python小技巧

列表推导

# 列表推导
l = [x for x in range(10)]
#  集合推导
s = {x for x in range(10)}
# 字典推导
d = {x:x/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中也是变量,所以可以赋值。

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


  转载请注明: Tomorrow Python小技巧

 上一篇
JSBOX-漫画小插件 JSBOX-漫画小插件
GitHub:鼠绘漫画 版本记录 2019/4/11 发布1.2版本了,哈哈哈哈哈哈哈哈哈~。可以获取全部的资源可,目前只有87部漫画。 2019/4/1 发布1.0版本了…哈哈哈。官方换了接口,重新调整了接口。 之后应该会保证
2019-04-01
下一篇 
代理IP池的构建 代理IP池的构建
最近开始学scrapy的使用,总的来说框架使用起来还不错,毕竟使用了异步架构,效率挺高的。底层还没看,再学点去读源码。 成果: 本来计划爬西刺代理构建好代理IP池然后再去爬其他网站数据,结果我是想多了,免费的不靠谱啊,没有合适的IP不说,
2019-03-28
  目录