Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python筛选列表?-Lambda函数_Python_Lambda - Fatal编程技术网

Python筛选列表?-Lambda函数

Python筛选列表?-Lambda函数,python,lambda,Python,Lambda,我这里有两个列表,一个是: c=["red", "blue", "green", "yellow", "purple", "orange", "white", "black"] 然后我有以下两个序列,它们产生了一个50种随机颜色的列表: nuSequence = map(lambda x : random.randint(0,7),range(50)) colSequence = map(lambda i: c[i], nuSequence) print colSequence 然后是这个小

我这里有两个列表,一个是:

c=["red", "blue", "green", "yellow", "purple", "orange", "white", "black"]
然后我有以下两个序列,它们产生了一个50种随机颜色的列表:

nuSequence = map(lambda x : random.randint(0,7),range(50))
colSequence = map(lambda i: c[i], nuSequence)
print colSequence
然后是这个小函数,它按照列表“c”的顺序存储事件列表

count2 = map(lambda x: nuSequence.count(x),range(len(c)))
我需要做的是打印出颜色的名称,后跟出现的次数,如:
blue-7
,反之亦然

我恐怕要说的是,您不能使用任何导入或循环,只使用过滤器和reduce或len

print "yellow: %d" % len( filter( lambda x: x == "yellow", c ) )
我恐怕要说的是,您不能仅使用 过滤,并减少或减少透镜

print "yellow: %d" % len( filter( lambda x: x == "yellow", c ) )
嗯。我要注意的是,
filter
reduce
(和
map
,和…)都使用循环,只是隐藏在本机代码中

def update_agg(agg,x):
    agg[x] = agg.get(x,0)+1
    return agg

reduce(lambda agg,x: update_agg(agg,x), colSequence, {})
Out[130]: 
{'black': 4,
 'blue': 5,
 'green': 6,
 'orange': 5,
 'purple': 6,
 'red': 8,
 'white': 10,
 'yellow': 6}
然后格式化
dict
,如果输出对您来说不够好,您可以随意格式化

编辑:lambda只是匿名函数。但是如果你真的不想要那
def
,我们可以从技术上做到这一点

reduce(lambda agg,x: agg.__setitem__(x,agg.get(x,0)+1) or agg, colSequence, {})

注意lambda语法是如何让事情变得几乎不可读的。这就是python中的函数式编程。

那么到目前为止您尝试了什么?那么问题出在哪里?到目前为止,你有什么代码,为什么你认为它不起作用?我试过count2=map(lambda x:nuSequence.count(x),range(len(c)))count=filter(lambda x:“{}{}”。format(count2(x),c(x)),c)printcount@Stooodent顺便说一下,你的导师显然是个白痴。为什么?为什么…?第一,学习如何克服局限性。是的,他是,你不必告诉我。第三,如果我以前使用过python,这也不会太糟糕,但我只使用过C#或Java:“(对不起,你明白我的意思了,谢谢你,它工作得很好,但我真的在寻找一个没有定义函数的解决方案,如果是这样的话possible@Stooodentlambda正在定义函数。也就是说,它是可能的(这不是我推荐的,因为它会降低可读性),请参见编辑。谢谢,伙计,我现在试一试,让你知道它是如何进行的。不幸的是,这是作业的目的,如果不是这样的话,我就不需要帮助了:/edit:@roippi,谢谢,伙计,做得很好。我欠你一声抱歉,我刚刚更新了这个问题。我真正想要的是迭代“count2”图和“c”l到目前为止,我已经尝试过:-count=filter(lambda x:“{}{}”。format(count2(x),c(x)),c)print count-这还不起作用