盒子
盒子
Posts List
  1. 交换两个变量的值
  2. 字符串连接
  3. 序列解包
  4. 列表
  5. 匿名函数lambda
  6. …for…in…if…
  7. 合理使用filter、map、reduce函数
  8. 迭代
  9. 使用with语句

更优雅的Python

交换两个变量的值

1.      >>>a=1
2.      >>>b=2
3.      >>>t=a
4.      >>>a=b
5.      >>>b=t
6.      >>>a
7.      2
8.      >>>b
9.      1      
更pythonic一点
1.      >>>a, b = b, a 

字符串连接

1.      >>>a =['aa', 'bb', 'cc']
2.      >>>s=a[0]
3.      >>>for b in a[1:]:
4.             s += ', ' + b
5.      >>>s
6.      aabbcc 
更pythonic一点    
1.      >>>a =['aa', 'bb', 'cc']
2.      >>>b=(', '.join(a))
3.      >>>b
4.      aabbcc

序列解包

1.      >>>p ='abc', 'f', 18
2.             name = p[0]
3.             gender = p[1]
4.             age = p[2]
更pythonic  
name,gender, age = p    

列表

反转一个列表

1.      >>> a = [1,2,3]
2.      >>> a[::-1]
3.      [3,2,1] 


1.      >>> a = [1,2,3] 
2.      >>>a.reverse() 
3.      [3,2,1]    

1.      >>> a = [1,2,3] 
2.      >>>a.sort(reverse=True) 
3.      [3,2,1] 

匿名函数lambda

1.      >>>def a(x):
2.             return x+1    
3.      >>>a(3)    
4.      4      

用lambda这样写就比较好看了:      

# lambda 形参 返回值 # 

1.      >>>a=lambda x:x+1    
2.      >>>a(3)    
3.      4 

…for…in…if…

1.      >>> a=[1,2,3]
2.      >>> b=[i*2 for i in a if i >1]
3.      >>>b
4.      [4,6]

合理使用filter、map、reduce函数

filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回

1.       filter( lambda x:x!='a', 'abcd' )   #'bcd'    

map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:

1.        map( lambda x:x+1, range(3) )  #[1,2,3]    

reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和

1.        reduce( lambda x,y:x+y, range(3), 10 )  #13    

迭代

需要获取index时使用enumerate

1.        d=['a', 'b', 'c']
2.        for index, value in enumerate(d):
3.        print(index)    
4.        0
5.        1
6.        2

对dict中的key,value迭代

1.         d=['a': 1, 'b': 2, 'c': 3]
2.         index, value in d.items():
3.         print(index,':',value)    
4.         a : 1
5.         b : 2
6.         c : 3

用zip同时遍历两个迭代器

1.        list_a = ['a', 'b', 'c', 'd']
2.        list_b = [1, 2, 3]
# 虽然列表长度不一样,但只要有一个列表耗尽,则迭代就会停止
3.        for letter, number in zip(list_a, list_b):
4.        print(letter, number)
5.        a 1
6.        b 2
7.        c 3          

使用with语句

通过with语句,代码完成了文件打开操作,并在调用结束,或者读取发生异常时自动关闭文件,即完成了文件读写之后的处理工作。

1.        with open('test.txt', 'r') as file:
2.        for line in file.readlines():
3.        print(line)
支持一下
扫一扫,支持forsigner