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]
**************************
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]
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的形式来定义函数,效果同上
字符串与列表
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>