`
xxi
  • 浏览: 65873 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Python 记录.

阅读更多
一, 2个长度相同的list, 如何在判断其中一个list时,得到另一组list的一些有用的数据.
>>>list1 = map(lambda x: '%s' % x,range(0,28))  # len(list1) == 28
'['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27']'
>>>list2 = range(5, 33) # len(list2) == 28
'[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]'

# 大小相同...
#2个list数据依依对应,list2有可能有重复值,所以不能用字典.
#要求:
#1>查找list2中小于15,并且大于2的数字
#2>把查找到的结果返回对应list1的结果
>>>filter(lambda x : x ,map(lambda x :2 <x <15 and list1[list2.index(x)], list2))
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']





end..

分享到:
评论
5 楼 ph4nut 2010-01-26  
One application of list comprehension : find out the prime numbers of a given numbers list.
<<< l = [x for x in xrange(2,100) if 0 not in [x%y for y in xrange(2,x)]] #list comprehension 
<<< l 
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 

But when the numbers list increases largely, list comprehension above has bad efficiency.
4 楼 xxi 2010-01-16  
map(lambda x:x[0], filter(lambda x: 2 < x[1] < 15, zip(list1, list2)))


为什么我老是喜欢这些函数呢...
3 楼 xxi 2010-01-16  
多谢.....
2 楼 RednaxelaFX 2010-01-16  
keakon 写道
根本不需要map和filter:

>>> list1 = (`x` for x in xrange(28))
>>> list2 = xrange(5, 33)
>>> [x[0] for x in zip(list1, list2) if 2 < x[1] < 15]
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

Guido当年就说有了list comprehension就没必要在核心库里留着map、filter和reduce与lambda的组合;结果经过争论map和filter还是留下来了,reduce则给干到了functools模块里。
咳,generator+list comprehension多方便啊……
1 楼 keakon 2010-01-16  
根本不需要map和filter:

>>> list1 = (`x` for x in xrange(28))
>>> list2 = xrange(5, 33)
>>> [x[0] for x in zip(list1, list2) if 2 < x[1] < 15]
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

相关推荐

Global site tag (gtag.js) - Google Analytics