论坛首页 编程语言技术论坛

Python 记录.

浏览 3965 次
锁定老帖子 主题:Python 记录.
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-16   最后修改:2010-01-16
一, 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..

   发表时间:2010-01-16   最后修改: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']
0 请登录后投票
   发表时间: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多方便啊……
0 请登录后投票
   发表时间:2010-01-16  
多谢.....
0 请登录后投票
   发表时间:2010-01-16  
map(lambda x:x[0], filter(lambda x: 2 < x[1] < 15, zip(list1, list2)))


为什么我老是喜欢这些函数呢...
0 请登录后投票
   发表时间:2010-01-26   最后修改: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.
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics