Python开发实用小技巧
2016-11-13 21:20
246 查看
交换变量
x
= 6
y
= 5
x,
y
= y,
x
print
x
>>>
5
print
y
>>>
6
if 语句在行内
print
"Hello"
if
True
else
"World"
>>>
Hello
连接
下面的最后一种方式在绑定两个不同类型的对象时显得很cool。
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
print
nfc
+ afc
>>>
['Packers',
'49ers',
'Ravens',
'Patriots']
print
str(1)
+ "
world"
>>>
1
world
print
`1`
+ "
world"
>>>
1
world
print
1,
"world"
>>>
1
world
print
nfc,
1
>>>
['Packers',
'49ers']
1
数字技巧
#除后向下取整
print
5.0//2
>>>
2
# 2的5次方
print
2**5
>>
32
注意浮点数的除法
print
.3/.1
>>>
2.9999999999999996
print
.3//.1
>>>
2.0
数值比较
这是我见过诸多语言中很少有的如此棒的简便法
x
= 2
if
3
> x
> 1:
print
x
>>>
2
if
1
< x
> 0:
print
x
>>>
2
同时迭代两个列表
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
for
teama,
teamb
in
zip(nfc,
afc):
print
teama
+ "
vs. "
+ teamb
>>>
Packers
vs.
Ravens
>>>
49ers
vs.
Patriots
带索引的列表迭代
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
index,
team
in
enumerate(teams):
print
index,
team
>>>
0
Packers
>>>
1
49ers
>>>
2
Ravens
>>>
3
Patriots
列表推导式
已知一个列表,我们可以刷选出偶数列表方法:
numbers
= [1,2,3,4,5,6]
even
= []
for
number
in
numbers:
if
number%2
== 0:
even.append(number)
转变成如下:
numbers
= [1,2,3,4,5,6]
even
= [number
for
number
in
numbers
if
number%2
== 0]
是不是很牛呢,哈哈。
字典推导
和列表推导类似,字典可以做同样的工作:
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
print
{key:
value
for
value,
key
in
enumerate(teams)}
>>>
{'49ers':
1,
'Ravens':
2,
'Patriots':
3,
'Packers':
0}
初始化列表的值
items
= [0]*3
print
items
>>>
[0,0,0]
列表转换为字符串
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
print
",
".join(teams)
>>>
'Packers,
49ers, Ravens, Patriots'
从字典中获取元素
我承认try/except代码并不雅致,不过这里有一种简单方法,尝试在字典中查找key,如果没有找到对应的alue将用第二个参数设为其变量值。
data
= {'user':
1,
'name':
'Max',
'three':
4}
try:
is_admin
= data['admin']
except
KeyError:
is_admin
= False
替换诚这样:
data
= {'user':
1,
'name':
'Max',
'three':
4}
is_admin
= data.get('admin',
False)
获取列表的子集
有时,你只需要列表中的部分元素,这里是一些获取列表子集的方法。
x
= [1,2,3,4,5,6]
#前3个
print
x[:3]
>>>
[1,2,3]
#中间4个
print
x[1:5]
>>>
[2,3,4,5]
#最后3个
print
x[-3:]
>>>
[4,5,6]
#奇数项
print
x[::2]
>>>
[1,3,5]
#偶数项
print
x[1::2]
>>>
[2,4,6]
60个字符解决FizzBuzz
前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:
写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。
这里就是一个简短的,有意思的方法解决这个问题:
for x in range(101):print"fizz"[x%3*4::]+"buzz"[x%5*4::]or x
集合
除了python内置的数据类型外,在collection模块同样还包括一些特别的用例,在有些场合Counter非常实用。如果你参加过在这一年的Facebook HackerCup,你甚至也能找到他的实用之处。
from
collections
import
Counter
print
Counter("hello")
>>>
Counter({'l':
2,
'h':
1,
'e':
1,
'o':
1})
迭代工具
和collections库一样,还有一个库叫itertools,对某些问题真能高效地解决。其中一个用例是查找所有组合,他能告诉你在一个组中元素的所有不能的组合方式
from
itertools
import
combinations
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
game
in
combinations(teams,
2):
print
game
>>>
('Packers',
'49ers')
>>>
('Packers',
'Ravens')
>>>
('Packers',
'Patriots')
>>>
('49ers',
'Ravens')
>>>
('49ers',
'Patriots')
>>>
('Ravens',
'Patriots')
False == True
比起实用技术来说这是一个很有趣的事,在python中,True和False是全局变量,因此:
False
= True
if
False:
print
"Hello"
else:
print
"World"
>>>
Hello
交换变量
x
= 6
y
= 5
x,
y
= y,
x
print
x
>>>
5
print
y
>>>
6
if 语句在行内
print
"Hello"
if
True
else
"World"
>>>
Hello
连接
下面的最后一种方式在绑定两个不同类型的对象时显得很cool。
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
print
nfc
+ afc
>>>
['Packers',
'49ers',
'Ravens',
'Patriots']
print
str(1)
+ "
world"
>>>
1
world
print
`1`
+ "
world"
>>>
1
world
print
1,
"world"
>>>
1
world
print
nfc,
1
>>>
['Packers',
'49ers']
1
数字技巧
#除后向下取整
print
5.0//2
>>>
2
#
2的5次方
print
2**5
>>
32
注意浮点数的除法
print
.3/.1
>>>
2.9999999999999996
print
.3//.1
>>>
2.0
数值比较
这是我见过诸多语言中很少有的如此棒的简便法
x
= 2
if
3
> x
> 1:
print
x
>>>
2
if
1
< x
> 0:
print
x
>>>
2
同时迭代两个列表
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
for
teama,
teamb
in
zip(nfc,
afc):
print
teama
+ "
vs. "
+ teamb
>>>
Packers
vs.
Ravens
>>>
49ers
vs.
Patriots
带索引的列表迭代
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
index,
team
in
enumerate(teams):
print
index,
team
>>>
0
Packers
>>>
1
49ers
>>>
2
Ravens
>>>
3
Patriots
列表推导式
已知一个列表,我们可以刷选出偶数列表方法:
numbers
= [1,2,3,4,5,6]
even
= []
for
number
in
numbers:
if
number%2
== 0:
even.append(number)
转变成如下:
numbers
= [1,2,3,4,5,6]
even
= [number
for
number
in
numbers
if
number%2
== 0]
是不是很牛呢,哈哈。
字典推导
和列表推导类似,字典可以做同样的工作:
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
print
{key:
value
for
value,
key
in
enumerate(teams)}
>>>
{'49ers':
1,
'Ravens':
2,
'Patriots':
3,
'Packers':
0}
初始化列表的值
items
= [0]*3
print
items
>>>
[0,0,0]
列表转换为字符串
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
print
",
".join(teams)
>>>
'Packers,
49ers, Ravens, Patriots'
从字典中获取元素
我承认try/except代码并不雅致,不过这里有一种简单方法,尝试在字典中查找key,如果没有找到对应的alue将用第二个参数设为其变量值。
data
= {'user':
1,
'name':
'Max',
'three':
4}
try:
is_admin
= data['admin']
except
KeyError:
is_admin
= False
替换诚这样:
data
= {'user':
1,
'name':
'Max',
'three':
4}
is_admin
= data.get('admin',
False)
获取列表的子集
有时,你只需要列表中的部分元素,这里是一些获取列表子集的方法。
x
= [1,2,3,4,5,6]
#前3个
print
x[:3]
>>>
[1,2,3]
#中间4个
print
x[1:5]
>>>
[2,3,4,5]
#最后3个
print
x[-3:]
>>>
[4,5,6]
#奇数项
print
x[::2]
>>>
[1,3,5]
#偶数项
print
x[1::2]
>>>
[2,4,6]
60个字符解决FizzBuzz
前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:
写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。
这里就是一个简短的,有意思的方法解决这个问题:
for x in range(101):print"fizz"[x%3*4::]+"buzz"[x%5*4::]or x
集合
除了python内置的数据类型外,在collection模块同样还包括一些特别的用例,在有些场合Counter非常实用。如果你参加过在这一年的Facebook HackerCup,你甚至也能找到他的实用之处。
from
collections
import
Counter
print
Counter("hello")
>>>
Counter({'l':
2,
'h':
1,
'e':
1,
'o':
1})
迭代工具
和collections库一样,还有一个库叫itertools,对某些问题真能高效地解决。其中一个用例是查找所有组合,他能告诉你在一个组中元素的所有不能的组合方式
from
itertools
import
combinations
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
game
in
combinations(teams,
2):
print
game
>>>
('Packers',
'49ers')
>>>
('Packers',
'Ravens')
>>>
('Packers',
'Patriots')
>>>
('49ers',
'Ravens')
>>>
('49ers',
'Patriots')
>>>
('Ravens',
'Patriots')
False == True
比起实用技术来说这是一个很有趣的事,在python中,True和False是全局变量,因此:
False
= True
if
False:
print
"Hello"
else:
print
"World"
>>>
Hello
x
= 6
y
= 5
x,
y
= y,
x
x
>>>
5
y
>>>
6
if 语句在行内
"Hello"
if
True
else
"World"
>>>
Hello
连接
下面的最后一种方式在绑定两个不同类型的对象时显得很cool。
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
nfc
+ afc
>>>
['Packers',
'49ers',
'Ravens',
'Patriots']
str(1)
+ "
world"
>>>
1
world
`1`
+ "
world"
>>>
1
world
1,
"world"
>>>
1
world
nfc,
1
>>>
['Packers',
'49ers']
1
数字技巧
#除后向下取整
5.0//2
>>>
2
# 2的5次方
2**5
>>
32
注意浮点数的除法
.3/.1
>>>
2.9999999999999996
.3//.1
>>>
2.0
数值比较
这是我见过诸多语言中很少有的如此棒的简便法
x
= 2
if
3
> x
> 1:
x
>>>
2
if
1
< x
> 0:
x
>>>
2
同时迭代两个列表
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
for
teama,
teamb
in
zip(nfc,
afc):
teama
+ "
vs. "
+ teamb
>>>
Packers
vs.
Ravens
>>>
49ers
vs.
Patriots
带索引的列表迭代
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
index,
team
in
enumerate(teams):
index,
team
>>>
0
Packers
>>>
1
49ers
>>>
2
Ravens
>>>
3
Patriots
列表推导式
已知一个列表,我们可以刷选出偶数列表方法:
numbers
= [1,2,3,4,5,6]
even
= []
for
number
in
numbers:
if
number%2
== 0:
even.append(number)
转变成如下:
numbers
= [1,2,3,4,5,6]
even
= [number
for
number
in
numbers
if
number%2
== 0]
是不是很牛呢,哈哈。
字典推导
和列表推导类似,字典可以做同样的工作:
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
{key:
value
for
value,
key
in
enumerate(teams)}
>>>
{'49ers':
1,
'Ravens':
2,
'Patriots':
3,
'Packers':
0}
初始化列表的值
items
= [0]*3
items
>>>
[0,0,0]
列表转换为字符串
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
",
".join(teams)
>>>
'Packers,
49ers, Ravens, Patriots'
从字典中获取元素
我承认try/except代码并不雅致,不过这里有一种简单方法,尝试在字典中查找key,如果没有找到对应的alue将用第二个参数设为其变量值。
data
= {'user':
1,
'name':
'Max',
'three':
4}
try:
is_admin
= data['admin']
except
KeyError:
is_admin
= False
替换诚这样:
data
= {'user':
1,
'name':
'Max',
'three':
4}
is_admin
= data.get('admin',
False)
获取列表的子集
有时,你只需要列表中的部分元素,这里是一些获取列表子集的方法。
x
= [1,2,3,4,5,6]
#前3个
x[:3]
>>>
[1,2,3]
#中间4个
x[1:5]
>>>
[2,3,4,5]
#最后3个
x[-3:]
>>>
[4,5,6]
#奇数项
x[::2]
>>>
[1,3,5]
#偶数项
x[1::2]
>>>
[2,4,6]
60个字符解决FizzBuzz
前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:
写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。
这里就是一个简短的,有意思的方法解决这个问题:
for x in range(101):print"fizz"[x%3*4::]+"buzz"[x%5*4::]or x
集合
除了python内置的数据类型外,在collection模块同样还包括一些特别的用例,在有些场合Counter非常实用。如果你参加过在这一年的Facebook HackerCup,你甚至也能找到他的实用之处。
from
collections
import
Counter
Counter("hello")
>>>
Counter({'l':
2,
'h':
1,
'e':
1,
'o':
1})
迭代工具
和collections库一样,还有一个库叫itertools,对某些问题真能高效地解决。其中一个用例是查找所有组合,他能告诉你在一个组中元素的所有不能的组合方式
from
itertools
import
combinations
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
game
in
combinations(teams,
2):
game
>>>
('Packers',
'49ers')
>>>
('Packers',
'Ravens')
>>>
('Packers',
'Patriots')
>>>
('49ers',
'Ravens')
>>>
('49ers',
'Patriots')
>>>
('Ravens',
'Patriots')
False == True
比起实用技术来说这是一个很有趣的事,在python中,True和False是全局变量,因此:
False
= True
if
False:
"Hello"
else:
"World"
>>>
Hello
交换变量
x
= 6
y
= 5
x,
y
= y,
x
x
>>>
5
y
>>>
6
if 语句在行内
"Hello"
if
True
else
"World"
>>>
Hello
连接
下面的最后一种方式在绑定两个不同类型的对象时显得很cool。
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
nfc
+ afc
>>>
['Packers',
'49ers',
'Ravens',
'Patriots']
str(1)
+ "
world"
>>>
1
world
`1`
+ "
world"
>>>
1
world
1,
"world"
>>>
1
world
nfc,
1
>>>
['Packers',
'49ers']
1
数字技巧
#除后向下取整
5.0//2
>>>
2
#
2的5次方
2**5
>>
32
注意浮点数的除法
.3/.1
>>>
2.9999999999999996
.3//.1
>>>
2.0
数值比较
这是我见过诸多语言中很少有的如此棒的简便法
x
= 2
if
3
> x
> 1:
x
>>>
2
if
1
< x
> 0:
x
>>>
2
同时迭代两个列表
nfc
= ["Packers",
"49ers"]
afc
= ["Ravens",
"Patriots"]
for
teama,
teamb
in
zip(nfc,
afc):
teama
+ "
vs. "
+ teamb
>>>
Packers
vs.
Ravens
>>>
49ers
vs.
Patriots
带索引的列表迭代
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
index,
team
in
enumerate(teams):
index,
team
>>>
0
Packers
>>>
1
49ers
>>>
2
Ravens
>>>
3
Patriots
列表推导式
已知一个列表,我们可以刷选出偶数列表方法:
numbers
= [1,2,3,4,5,6]
even
= []
for
number
in
numbers:
if
number%2
== 0:
even.append(number)
转变成如下:
numbers
= [1,2,3,4,5,6]
even
= [number
for
number
in
numbers
if
number%2
== 0]
是不是很牛呢,哈哈。
字典推导
和列表推导类似,字典可以做同样的工作:
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
{key:
value
for
value,
key
in
enumerate(teams)}
>>>
{'49ers':
1,
'Ravens':
2,
'Patriots':
3,
'Packers':
0}
初始化列表的值
items
= [0]*3
items
>>>
[0,0,0]
列表转换为字符串
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
",
".join(teams)
>>>
'Packers,
49ers, Ravens, Patriots'
从字典中获取元素
我承认try/except代码并不雅致,不过这里有一种简单方法,尝试在字典中查找key,如果没有找到对应的alue将用第二个参数设为其变量值。
data
= {'user':
1,
'name':
'Max',
'three':
4}
try:
is_admin
= data['admin']
except
KeyError:
is_admin
= False
替换诚这样:
data
= {'user':
1,
'name':
'Max',
'three':
4}
is_admin
= data.get('admin',
False)
获取列表的子集
有时,你只需要列表中的部分元素,这里是一些获取列表子集的方法。
x
= [1,2,3,4,5,6]
#前3个
x[:3]
>>>
[1,2,3]
#中间4个
x[1:5]
>>>
[2,3,4,5]
#最后3个
x[-3:]
>>>
[4,5,6]
#奇数项
x[::2]
>>>
[1,3,5]
#偶数项
x[1::2]
>>>
[2,4,6]
60个字符解决FizzBuzz
前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:
写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。
这里就是一个简短的,有意思的方法解决这个问题:
for x in range(101):print"fizz"[x%3*4::]+"buzz"[x%5*4::]or x
集合
除了python内置的数据类型外,在collection模块同样还包括一些特别的用例,在有些场合Counter非常实用。如果你参加过在这一年的Facebook HackerCup,你甚至也能找到他的实用之处。
from
collections
import
Counter
Counter("hello")
>>>
Counter({'l':
2,
'h':
1,
'e':
1,
'o':
1})
迭代工具
和collections库一样,还有一个库叫itertools,对某些问题真能高效地解决。其中一个用例是查找所有组合,他能告诉你在一个组中元素的所有不能的组合方式
from
itertools
import
combinations
teams
= ["Packers",
"49ers",
"Ravens",
"Patriots"]
for
game
in
combinations(teams,
2):
game
>>>
('Packers',
'49ers')
>>>
('Packers',
'Ravens')
>>>
('Packers',
'Patriots')
>>>
('49ers',
'Ravens')
>>>
('49ers',
'Patriots')
>>>
('Ravens',
'Patriots')
False == True
比起实用技术来说这是一个很有趣的事,在python中,True和False是全局变量,因此:
False
= True
if
False:
"Hello"
else:
"World"
>>>
Hello
相关文章推荐
- JavaScript编程开发中的五个实用小技巧
- 使用Python开发Android应用程序:第二节 第一个有实用价值的应用
- 实用工具:VS上python开发插件(python tools for visual studio)
- iOS开发中简单实用的几个小技巧
- Mac Python实用工具开发记录
- 用python快速开发一个实用的socket服务器
- iOS学习笔记之开发实用小技巧(持续更新)
- Python实用小技巧
- python中一些比较实用的小技巧
- 前端开发实用的小技巧
- Python:实用抓图工具开发介绍(含需求分析、设计、编码、单元测试、打包、系统测试、发布各环节)
- 开发之余实用小技巧
- 用python快速开发一个实用的socket服务器
- Python 开发的 10 个小技巧
- 实用的python小技巧
- JavaScript编程开发中的五个实用小技巧
- 用PYTHON快速开发一个实用的SOCKET服务器【转】
- [IOS开发中使用的小技巧]xcode实用快捷键(更新中)
- 【开发】实用小技巧
- python 实用的30个小技巧