python备用

Python特殊语法:filter、map、reduce、lambda [转]

http://www.cnblogs.com/longdouhzt/archive/2012/05/19/2508844.html

 

map函数用法

 1 ls = [1,2,3]
 2 rs = map(str, ls)
 3  
 4 #打印结果 ['1', '2', '3']
 5 lt = [1, 2, 3, 4, 5, 6]
 6 def add(num):
 7     return num + 1
 8  
 9 rs = map(add, lt)
10 print rs #[2,3,4,5,6,7]
View Code

 

**************************

print sum(map(int, '123'))
输出:

6

为这个数所有位数字之和

**************************

 

random类

  1 random.random
  2 
  3 random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0
  4 random.uniform
  5 
  6   random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。
  7 
  8     print random.uniform(10, 20)  
  9     print random.uniform(20, 10)  
 10     #---- 结果(不同机器上的结果不一样)  
 11     #18.7356606526  
 12     #12.5798298022  
 13 
 14 print random.uniform(10, 20) print random.uniform(20, 10) #---- 结果(不同机器上的结果不一样) #18.7356606526 #12.5798298022
 15 random.randint
 16 
 17   random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
 18 
 19     print random.randint(12, 20)  #生成的随机数n: 12 <= n <= 20  
 20     print random.randint(20, 20)  #结果永远是20  
 21     #print random.randint(20, 10)  #该语句是错误的。下限必须小于上限。  
 22 
 23 print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20 print random.randint(20, 20) #结果永远是20 #print random.randint(20, 10) #该语句是错误的。下限必须小于上限。
 24 random.randrange
 25 
 26   random.randrange的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。
 27 random.choice
 28 
 29   random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。有关sequence可以查看python手册数据模型这一章。下面是使用choice的一些例子:
 30 
 31     print random.choice("学习Python")   
 32     print random.choice(["JGood", "is", "a", "handsome", "boy"])  
 33     print random.choice(("Tuple", "List", "Dict"))  
 34 
 35 print random.choice("学习Python") print random.choice(["JGood", "is", "a", "handsome", "boy"]) print random.choice(("Tuple", "List", "Dict"))
 36 random.shuffle
 37 
 38   random.shuffle的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱。如:
 39 
 40     p = ["Python", "is", "powerful", "simple", "and so on..."]  
 41     random.shuffle(p)  
 42     print p  
 43     #---- 结果(不同机器上的结果可能不一样。)  
 44     #['powerful', 'simple', 'is', 'Python', 'and so on...']  
 45 
 46 p = ["Python", "is", "powerful", "simple", "and so on..."] random.shuffle(p) print p #---- 结果(不同机器上的结果可能不一样。) #['powerful', 'simple', 'is', 'Python', 'and so on...']
 47 random.sample
 48 
 49   random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
 50 
 51     list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
 52     slice = random.sample(list, 5)  #从list中随机获取5个元素,作为一个片断返回  
 53     print slice  
 54     print list #原有序列并没有改变。  
 55 
 56  
 57 
 58  
 59 
 60 随机整数:
 61 >>> import random
 62 >>> random.randint(0,99)
 63 21
 64 
 65 随机选取0到100间的偶数:
 66 >>> import random
 67 >>> random.randrange(0, 101, 2)
 68 42
 69 
 70 随机浮点数:
 71 >>> import random
 72 >>> random.random() 
 73 0.85415370477785668
 74 >>> random.uniform(1, 10)
 75 5.4221167969800881
 76 
 77 随机字符:
 78 >>> import random
 79 >>> random.choice('abcdefg&#%^*f')
 80 'd'
 81 
 82 多个字符中选取特定数量的字符:
 83 >>> import random
 84 random.sample('abcdefghij',3) 
 85 ['a', 'd', 'b']
 86 
 87 多个字符中选取特定数量的字符组成新字符串:
 88 >>> import random
 89 >>> import string
 90 >>> string.join(random.sample(['a','b','c','d','e','f','g','h','i','j'], 3)).r
 91 eplace(" ","")
 92 'fih'
 93 
 94 随机选取字符串:
 95 >>> import random
 96 >>> random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )
 97 'lemon'
 98 
 99 洗牌:
100 >>> import random
101 >>> items = [1, 2, 3, 4, 5, 6]
102 >>> random.shuffle(items)
103 >>> items
104 [3, 2, 5, 6, 4, 1]
View Code

bisect.insort()插入

bisect.bisect()找插入位置

 

 map接收一个函数和一个可迭代对象(如列表)作为参数,用函数处理每个元素,然后返回新的列表。  

  ACM有时需要要a b c这样的一行格式输入,这时可以用map函数来处理,这里假设a,b,c都是整数。

a, b, c = map(int, raw_input().split())

  raw_input函数输入的是字符串,字符串的split方法用来将字符串分割成序列。

 

sort的使用

 1     a = [5,2,1,9,6]        
 2      
 3     >>> sorted(a)                  #将a从小到大排序,不影响a本身结构 
 4     [1, 2, 5, 6, 9] 
 5      
 6     >>> sorted(a,reverse = True)   #将a从大到小排序,不影响a本身结构 
 7     [9, 6, 5, 2, 1] 
 8      
 9     >>> a.sort()                   #将a从小到大排序,影响a本身结构 
10     >>> a 
11     [1, 2, 5, 6, 9] 
12      
13     >>> a.sort(reverse = True)     #将a从大到小排序,影响a本身结构 
14     >>> a 
15     [9, 6, 5, 2, 1] 
16      
17     注意,a.sort() 已改变其结构,b = a.sort() 是错误的写法! 
18 
19     >>> b = ['aa','BB','bb','zz','CC'] 
20     >>> sorted(b) 
21     ['BB', 'CC', 'aa', 'bb', 'zz']    #按列表中元素每个字母的ascii码从小到大排序,如果要从大到小,请用sorted(b,reverse=True)下同 
22      
23     >>> c =['CCC', 'bb', 'ffff', 'z']  
24     >>> sorted(c,key=len)             #按列表的元素的长度排序 
25     ['z', 'bb', 'CCC', 'ffff'] 
26      
27     >>> d =['CCC', 'bb', 'ffff', 'z'] 
28     >>> sorted(d,key = str.lower )    #将列表中的每个元素变为小写,再按每个元素中的每个字母的ascii码从小到大排序 
29     ['bb', 'CCC', 'ffff', 'z'] 
30      
31     >>> def lastchar(s): 
32            return s[-1] 
33     >>> e = ['abc','b','AAz','ef'] 
34     >>> sorted(e,key = lastchar)      #自定义函数排序,lastchar为函数名,这个函数返回列表e中每个元素的最后一个字母 
35     ['b', 'abc', 'ef', 'AAz']         #sorted(e,key=lastchar)作用就是 按列表e中每个元素的最后一个字母的ascii码从小到大排序 
36      
37     >>> f = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}]     #列表中的元素为字典 
38     >>> def age(s): 
39            return s['age'] 
40     >>> ff = sorted(f,key = age)      #自定义函数按列表f中字典的age从小到大排序  
41      
42     [{'age': 20, 'name': 'abc'}, {'age': 25, 'name': 'ghi'}, {'age': 30, 'name': 'def'}] 
43      
44     >>> f2 = sorted(f,key = lambda x:x['age'])    #如果觉得上面定义一个函数代码不美观,可以用lambda的形式来定义函数,效果同上 
View Code

 

字符串与列表

s = ""  #字符串k = [] #列表

ch = '2'

s += ch

k.append(ch)

s.strip()

''.join(k)

 

遍历列表

1 foo = 'abc'
2 for i in range(len(foo)):
3     print foo[i], '(%d)' %i


2.3之后添加

1 foo = 'abc'
2 for i, ch in enumerate(foo):
3     print ch, '(%d)' % i

 

1 s = 'abdasdas'
2 for i in s:
3     print i+'_',
4 a_ b_ d_ a_ s_ d_ a_ s_

 

ord()返回单字符在ascii中对应的整数

char.isalpha()

1 从上面几个例子中,可易理解Python lambda语法:
2 
3 lambda [arg1[,arg2,arg3....argN]]:expression
4 
5 lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。
6 
7 print lambda:'beginman'   #<function <lambda> at 0x00B00A30>

 

posted @ 2015-08-08 01:09  UsedRose  阅读(200)  评论(0编辑  收藏  举报