文章目录
1. 赋值
a,b = b,a # 这样就完成了两个变量的交换
a, b = 3, 4 # 类似的赋值行为
a, b, c = 3, 4, 5 # 当然可以写更多
1.1 返回多个返回值
当然,自从c++11之后,tuple也被引入c++中了。
def fun() -> (float, int, bool):
# process
# ...
return (arg1, arg2, arg3)
2. 三目运算符
c语言中有?:
这个三目运算符,python中有以下语法与之对应:
a = b if b>0 else -b
相当于c语言的
a = b>0?b:-b;
3. with open
with open(file_name, encoding='utf-8') as f:
print(f.read())
作为c语言出身的小白,看到以上写法不知有多兴奋,之前写python总是写成下边的形式,
f = open(file_name, 'r')
print(f.read())
f.cllose()
4. format
python 3的format是非常强大的,以下是个例子
'{:.2f} {:.3f}'.format(2.434,7.45354)
'{a:.2f} {b:.3f}'.format(a=2.434,b=7.45354)
'{} {}'.format(2.434,7.45354)
'{a:.2f} {b:.3f} {a} {a}'.format(a=2.434,b=7.45354)
5. 负序号
python中竟然有负数序号,倒数第一个序号为 -1 而倒数第二个序号为 -2。
s = r'hello world'
# s[-1] == 'd' would return true
6. 列表推导式(很强大的特性)
6.1 列表推导式
result = [obj.method() for obj in mylist]
如:
from math import sqrt
mylist = range(5)
result = [sqrt(obj) for obj in mylist]
result
Out[81]: [0.0, 1.0, 1.4142135623730951, 1.7320508075688772, 2.0]
6.2 生成器表达式
从下边的例子可以看出,生成器表达式生成的不是列表,而是迭代器,这一点与列表推导式不一样
from math import sqrt
mylist = range(5)
result = (sqrt(obj) for obj in mylist])
for i in result:
print(i)
0.0
1.0
1.4142135623730951
1.7320508075688772
2.0
7. 有意思的循环
以下两个语句想必够用了
for item in mylist:
print(item)
for inx, item in enumerate(mylist):
print(inx, item) # 同时获取idex和元素
8. 连续不等式
c中我们这么写
if (a<5 && a>1) {
// process
}
python中我们可以这么写
if 1<a<5:
# process
也可以写更多
if 1<a<5<b<6>c<9:
# process
9. 设置默认值
如果b为空,那么默认字符串给a
a=b or "this is default string"