boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 来个PYTHON LIST COMPREHENSION的问题
相关主题
谁知道这个嵌套的Python if 是啥意思?
C++的很多library到底是趋于集中,还是各个公司独自开发,各立山头
python读入文件疑问
[合集] 我也花了一小时读了一下python
Python程序员请进
Python 的设计狗屎不如
yield和goroutine啥区别?
FP有的,Python都有!
Python:请问如何把list变成structured array。
Python: 有一个混合了子list和string的list, 如何判断元素是list还是string?
相关话题的讨论汇总
话题: listoflist话题: list话题: python话题: out
进入Programming版参与讨论
1 (共1页)
y***a
发帖数: 840
1
假设listoflist的每个成员都是一个整数list, 成员LIST的大小都一样,但是是个
RUNTIME才知道的。
listoflist本身的成员个数也是RUNTIME才知道,
比如
listoflist=[[1,1,1,1...], [2,2,2,2...], [4,4,4,4...] ...]
怎么写个LIST  comprehension,生成另外一个LIST, 这个LIST每个成员是listoflist
里每个成员list的相应成员的或
比如,上面的例子如果没有省略号, 结果应该是[7,7,7,7]
list comprehension用的还不熟,请指教下。谢谢
H****S
发帖数: 1359
2
用reduce加一层list comprehension就好了,不要折磨自己大脑:)
y***a
发帖数: 840
3
头一次听说REDUCE, 先谢再试

【在 H****S 的大作中提到】
: 用reduce加一层list comprehension就好了,不要折磨自己大脑:)
y***a
发帖数: 840
4
this seems work:
reduce( lambda x,y: [i[0]|i[1] for i in zip(x,y)] ,listoflist)
but performance wise, the order of computation is not efficient. I hope it
could OR all the 1st element then do the 2nd element. But the above code is
doing list by list compuation, which is inefficient.
any better solution?

【在 y***a 的大作中提到】
: 头一次听说REDUCE, 先谢再试
y***a
发帖数: 840
5
[ reduce( lambda x,y:x|y, j , 0) for j in [ [ i[s] for i in listoflist
] for s in range(len(listoflist[0]))] ]
it is ugly

is

【在 y***a 的大作中提到】
: this seems work:
: reduce( lambda x,y: [i[0]|i[1] for i in zip(x,y)] ,listoflist)
: but performance wise, the order of computation is not efficient. I hope it
: could OR all the 1st element then do the 2nd element. But the above code is
: doing list by list compuation, which is inefficient.
: any better solution?

n******7
发帖数: 12463
6
import numpy as np
sum(np.array(listoflist))
H****S
发帖数: 1359
7
I would use unzip/transpose in scala, and surprisingly Python has this out
of the box too :)
http://stackoverflow.com/questions/19339/a-transpose-unzip-func

is

【在 y***a 的大作中提到】
: this seems work:
: reduce( lambda x,y: [i[0]|i[1] for i in zip(x,y)] ,listoflist)
: but performance wise, the order of computation is not efficient. I hope it
: could OR all the 1st element then do the 2nd element. But the above code is
: doing list by list compuation, which is inefficient.
: any better solution?

m********5
发帖数: 17667
8
别误入歧途了
我10年前也是成天诼磨这种茴字有几种写法,后来发现实际应用中根本没有。
用map,reduce这些因为内部纯C实现的,是能提高一些效率,因此在读起来写起来很直
白的时候可以适当应用。而list comprehension 原本是为了增加阅读性的,你如果写
一个list comprehension还要绞尽脑汁,别人怎么读? 停吧! 这既提高不了运行效率
,又让人读得难受的code千万别写。
要追求效率用java,要追求更高的效率用C吧。python应该是流畅地像谈心一样的书写。
读起来也应该像读轻小说一样容易。
如果为了考验智力,节省code行数,大可以用brainfuck, FALSE,写出来的code除了你
没人能看懂,好多程序只要十几个字符搞定,多高端大气上档次!
python还有一个方向是像写日记一样轻快,写完几乎不用debug就直接跑,跑完就扔。
為什麼跑完就扔呢?因为这种日记一样的书写方式会大量使用一些黑话,比如最常见的
var=default_val,*args,**kwds。这种东西在当时写起来异常舒适,因为你自己知道哪
些值可以传入,哪些值不写就有默认值。新版本的库加入新控制参数的时候尤为方便,
直接就兼容老应用。但这种code根本没法维护, 即使你再勤快地改写文档,多call几次
以后就犹如泥牛入大海,根本搞不清哪些参数需要传入,哪些还在用默认值。

listoflist

【在 y***a 的大作中提到】
: [ reduce( lambda x,y:x|y, j , 0) for j in [ [ i[s] for i in listoflist
: ] for s in range(len(listoflist[0]))] ]
: it is ugly
:
: is

L***s
发帖数: 1148
9
In [1]: x=[
...: [1,1,1,1],
...: [2,2,2,2],
...: [4,4,4,4],
...: ]
In [2]: zip(*x)
Out[2]: [(1, 2, 4), (1, 2, 4), (1, 2, 4), (1, 2, 4)]
In [3]: map(sum, zip(*x))
Out[3]: [7, 7, 7, 7]
不谢
y***a
发帖数: 840
10
那么严肃干啥?
弄个BRAIN TEASER来玩玩, 又没问你我要不要怎么写, 我不是论文答辩,不是
BUSINESS PLAN, 你知道就回答,不知道看看走开就行了, 没请教你前途问题, 这
么多废话。我是新手你也不用给我塞这么多毫无关系的东西

【在 m********5 的大作中提到】
: 别误入歧途了
: 我10年前也是成天诼磨这种茴字有几种写法,后来发现实际应用中根本没有。
: 用map,reduce这些因为内部纯C实现的,是能提高一些效率,因此在读起来写起来很直
: 白的时候可以适当应用。而list comprehension 原本是为了增加阅读性的,你如果写
: 一个list comprehension还要绞尽脑汁,别人怎么读? 停吧! 这既提高不了运行效率
: ,又让人读得难受的code千万别写。
: 要追求效率用java,要追求更高的效率用C吧。python应该是流畅地像谈心一样的书写。
: 读起来也应该像读轻小说一样容易。
: 如果为了考验智力,节省code行数,大可以用brainfuck, FALSE,写出来的code除了你
: 没人能看懂,好多程序只要十几个字符搞定,多高端大气上档次!

相关主题
[合集] 我也花了一小时读了一下python
Python程序员请进
Python 的设计狗屎不如
yield和goroutine啥区别?
进入Programming版参与讨论
n******7
发帖数: 12463
11
。。。

【在 y***a 的大作中提到】
: 那么严肃干啥?
: 弄个BRAIN TEASER来玩玩, 又没问你我要不要怎么写, 我不是论文答辩,不是
: BUSINESS PLAN, 你知道就回答,不知道看看走开就行了, 没请教你前途问题, 这
: 么多废话。我是新手你也不用给我塞这么多毫无关系的东西

l*********o
发帖数: 3091
12
说的好。

【在 m********5 的大作中提到】
: 别误入歧途了
: 我10年前也是成天诼磨这种茴字有几种写法,后来发现实际应用中根本没有。
: 用map,reduce这些因为内部纯C实现的,是能提高一些效率,因此在读起来写起来很直
: 白的时候可以适当应用。而list comprehension 原本是为了增加阅读性的,你如果写
: 一个list comprehension还要绞尽脑汁,别人怎么读? 停吧! 这既提高不了运行效率
: ,又让人读得难受的code千万别写。
: 要追求效率用java,要追求更高的效率用C吧。python应该是流畅地像谈心一样的书写。
: 读起来也应该像读轻小说一样容易。
: 如果为了考验智力,节省code行数,大可以用brainfuck, FALSE,写出来的code除了你
: 没人能看懂,好多程序只要十几个字符搞定,多高端大气上档次!

l*********o
发帖数: 3091
13
所以,你也承认,一点儿不实用。

【在 y***a 的大作中提到】
: 那么严肃干啥?
: 弄个BRAIN TEASER来玩玩, 又没问你我要不要怎么写, 我不是论文答辩,不是
: BUSINESS PLAN, 你知道就回答,不知道看看走开就行了, 没请教你前途问题, 这
: 么多废话。我是新手你也不用给我塞这么多毫无关系的东西

y***a
发帖数: 840
14
我没说实用

【在 l*********o 的大作中提到】
: 所以,你也承认,一点儿不实用。
y***a
发帖数: 840
15
this one looks nicer. thx

【在 H****S 的大作中提到】
: I would use unzip/transpose in scala, and surprisingly Python has this out
: of the box too :)
: http://stackoverflow.com/questions/19339/a-transpose-unzip-func
:
: is

y***a
发帖数: 840
16
这个跟HOBOCS给的那个链接比较像, 比我一开始那个好看不少

【在 L***s 的大作中提到】
: In [1]: x=[
: ...: [1,1,1,1],
: ...: [2,2,2,2],
: ...: [4,4,4,4],
: ...: ]
: In [2]: zip(*x)
: Out[2]: [(1, 2, 4), (1, 2, 4), (1, 2, 4), (1, 2, 4)]
: In [3]: map(sum, zip(*x))
: Out[3]: [7, 7, 7, 7]
: 不谢

k****0
发帖数: 7
17
[sum(i) for i in zip(*listoflist)]
1 (共1页)
进入Programming版参与讨论
相关主题
Python: 有一个混合了子list和string的list, 如何判断元素是list还是string?
python gc question
问个python小问题
请问有没有关于python的一个常见问题集
python 问题,急,在线等。
请教个javascript的问题 (转载)
JAVA equals()和hashCode()请教。
问个Hadoop Word Count的简单问题
感觉用python的人,属于程序员中的文艺青年那类的
看C码工写Python真是捉急
相关话题的讨论汇总
话题: listoflist话题: list话题: python话题: out