Python版本为Python3
字符串
# 去除空格
>>>" xyz ".strip() # returns "xyz"
>>>" xyz ".lstrip() # returns "xyz "
>>>" xyz ".rstrip() # returns " xyz"
>>>" x y z ".replace(' ', '') # returns "xyz"
# 修改字符串
>>>str = "hello world"
>>>str = str[:5] + "," + str[6:]
>>>str # return "hello,world"
循环
# 如果只是单纯的想循环次数而不是遍历列表等,建议采取下面这种方法
>>>for _ in range(10):
... print(x) # 连续输出10个x
...
# 列表的另一种循环
>>>list1 = [(1, 2), (3, 4), (5, 6)]
>>>for i, j in list1: # 可放入两个参数
... print(i, j) # 分别输出两个值,分三次输出
...
# zip在循环中的用途
>>>list1 = [1, 2, 3]
>>>list2 = [4, 5, 6]
>>>for i, j in zip(list1, list2):
... print(i, j) # 按顺序输出两个值,分三次输出,第一行为1,4
字典
>>>dict = {"a": 1, "b": 2, "c": 3}
# 所有的key
>>>dict.keys() # dict_keys(['a', 'b', 'c'])
# 所有的value
>>>dict.values() # dict_keys([1, 2, 3])
# 所有的值
>>>dict.items() # dict_items([("a": 1), ("b": 2), ("c": 3)])
类型转换
# 像一般的强制转换,如int、str我就不举例了
# eval可以智能识别字符串需要转换的对象,如果有转换不了的,就会报错
>>>s = "123"
>>>type(s) # return <class 'str'>
>>>s = eval(s)
>>>type(s) # return <class 'int'>
>>>dict = '{"a": 1, "b": 2, "c": 3}'
>>>type(dict) # return <class 'str'>
>>>dict = eval(dict)
>>>type(dict) # return <class 'dict'>
# 还有列表、元组等类型也可以使用此方法,在此就不一一举例了
执行系统命令
有时候我们为了方便需要在Python中执行系统命令
# 导入系统管理模块
>>>import os
# 将结果保存在str中,command为需要执行的命令,command为字符串
>>>str = os.popen(command).read()
>>>type(str) # return <class 'str'> 一般情况下需要另行处理
推导式(comprehensions)
列表推导式
variable = [out_exp for out_exp in input_list if out_exp == 2]
举个栗子
# 返回一个由0-9组成的列表
>>>list = [x for x in range(10)]
# 返回一个由0-9的二次方组成的列表
>>>list = [x**2 for x in range(10)]
字典推导式
dict = {
key: value for key, value in other_dict.items()
}
集合推导式
基本同列表推导式,只需将[]
换成{}
即可。
注:集合无重复数据,可利用其特性去重
lambda表达式
一行函数,又称匿名函数
格式:
lambda 参数:操作(参数)
几个栗子
>>>add_sum = lambda x, y: x + y
>>>print(add_sum(1, 2))
# 输出3
# 列表排序,降序且以元组内第一个数字为key
>>>list = [(1, 2), (4, 1), (9, 10), (13, -3)]
>>>list.sort(key=lambda x: x[1])
一行式
快速共享文件
使用下面的一行命令即可开启网络共享服务,共享文件为当前目录下的所有文件
# Python2
>>>python -m SimpleHTTPServer
# Python3
>>>python -m http.server
格式化输出
py文件中引入pprint模块,可以漂亮的输出字典、列表等
from pprint import pprint
pprint(dict)
终端下,可使用一行命令直接美化json文件的输出
>>>cat file.json | python -m json.tool
脚本性能分析
定位脚本性能瓶颈,这里使用cProfile,实现起来比profile更快,因为它是用C写的
>>>python -m cProfile my_script.py
csv文件转为json
如题,其实是取巧了,在终端下执行Python命令,然后不换行输入命令。
>>>python -c "import csv,json;print json.dumps(list(csv.reader(open('csv_file.csv'))))"
列表碾平
将多维列表转为一维列表
# 多维列表
>>>list_many = [[1, 2], [3, 4], [5, 6]]
>>>print(list(itertools.chain.from_iterable(list_many)))
# or
>>>print(list(itertools.chain(*list_many)))
# [1, 2, 3, 4, 5, 6],此为一维列表
For-Else
结构:
for item in container:
if search_something(item):
# Found it!
process(item)
break
else:
# Didn't find anything..
not_found_in_container()
官网例子,对比非for-else
结构
for-else可以比普通for循环多执行一步–>找出质数
# 普通for循环
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n/x)
break
# for-else结构
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print( n, 'equals', x, '*', n/x)
break
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
传输文件
这个功能简直了,其实也不能称作为技巧,是Python的第三方包。具体操作可参见我的另一篇博客。