Questions tagged «list-comprehension»

语法构造提供了一种简洁的方式来创建类似于数学集合生成器符号的样式的列表。由于多种语言都支持列表理解,因此请将此标记与编程语言的标记结合使用。

7
Python使用枚举内部列表理解
假设我有一个这样的列表: mylist = ["a","b","c","d"] 要获得打印的值及其索引,我可以使用Python的enumerate函数,如下所示 >>> for i,j in enumerate(mylist): ... print i,j ... 0 a 1 b 2 c 3 d >>> 现在,当我尝试在A中使用它时,出现list comprehension了这个错误 >>> [i,j for i,j in enumerate(mylist)] File "<stdin>", line 1 [i,j for i,j in enumerate(mylist)] ^ SyntaxError: invalid syntax 所以,我的问题是:在列表理解中使用枚举的正确方法是什么?

6
如何处理列表推导中的异常?
我在Python中有一些列表理解,其中每次迭代都可能引发异常。 例如,如果我有: eggs = (1,3,0,3,2) [1/egg for egg in eggs] 我将ZeroDivisionError在第3个元素中得到一个例外。 如何处理此异常并继续执行列表理解? 我能想到的唯一方法是使用辅助函数: def spam(egg): try: return 1/egg except ZeroDivisionError: # handle division by zero error # leave empty for now pass 但这对我来说有点麻烦。 有没有更好的方法在Python中执行此操作? 注意: 这是我做的一个简单示例(请参阅上面的“ 例如 ”),因为我的实际示例需要一些上下文。我对避免除以零错误不感兴趣,但对处理列表理解中的异常不感兴趣。

6
列表理解甚至在理解范围之后也会重新绑定名称。这是正确的吗?
理解与范围界定存在一些意外的相互作用。这是预期的行为吗? 我有一个方法: def leave_room(self, uid): u = self.user_by_id(uid) r = self.rooms[u.rid] other_uids = [ouid for ouid in r.users_by_id.keys() if ouid != u.uid] other_us = [self.user_by_id(uid) for uid in other_uids] r.remove_user(uid) # OOPS! uid has been re-bound by the list comprehension above # Interestingly, it's rebound to the last uid in …

10
Python方式打印列表项
我想知道是否有比这更好的方法来打印Python列表中的所有对象: myList = [Person("Foo"), Person("Bar")] print("\n".join(map(str, myList))) Foo Bar 我读这种方式不是很好: myList = [Person("Foo"), Person("Bar")] for p in myList: print(p) 是否没有类似的东西: print(p) for p in myList 如果没有,我的问题是...为什么?如果我们可以使用综合列表来完成此类工作,为什么不将其作为列表之外的简单语句呢?

7
使用列表推导只是副作用是Pythonic吗?
考虑一下我需要它带来副作用的函数,而不是返回值(例如打印到屏幕,更新GUI,打印到文件等)。 def fun_with_side_effects(x): ...side effects... return y 现在,使用列表推导功能将此功能称为Pythonic: [fun_with_side_effects(x) for x in y if (...conditions...)] 请注意,我不会将列表保存在任何地方 还是我应该这样称呼这个函数: for x in y: if (...conditions...): fun_with_side_effects(x) 哪个更好?为什么?

5
使用if语句进行列表理解
我想比较2个可迭代项并打印出现在两个可迭代项中的项目。 >>> a = ('q', 'r') >>> b = ('q') # Iterate over a. If y not in b, print y. # I want to see ['r'] printed. >>> print([ y if y not in b for y in a]) ^ 但这给我一个无效的语法错误,该错误^已放置在处。这个lamba函数有什么问题?

2
熊猫中的for循环真的不好吗?我什么时候应该在意?
是for循环真正的“坏”?如果不是,在什么情况下它们会比使用更常规的“矢量化”方法更好?1个 我熟悉“矢量化”的概念,以及熊猫如何利用矢量化技术来加快计算速度。向量化功能在整个系列或DataFrame上广播操作,以实现比传统上迭代数据快得多的加速。 但是,我很惊讶地看到很多代码(包括来自Stack Overflow的答案)提供了解决问题的解决方案,这些问题涉及使用for循环和列表推导来遍历数据。文档和API指出循环是“不好的”循环,并且“绝不能”循环访问数组,序列或DataFrame。那么,为什么有时我会看到用户建议基于循环的解决方案? 1-虽然问题听起来似乎有些宽泛,但事实是,在某些非常特殊的情况下,for循环通常比传统上遍历数据更好。这篇文章的目的是为了后代。



17
Ruby中的列表理解
为了进行等效于Python列表推导的操作,我正在执行以下操作: some_array.select{|x| x % 2 == 0 }.collect{|x| x * 3} 是否有更好的方法来执行此操作……也许只用一个方法调用?

3
在Python列表理解中可以访问项目索引吗?
考虑下面的Python代码,我用它在list2索引中从1到3的所有新项中添加list1: for ind, obj in enumerate(list1): if 4 > ind > 0: list2.append(obj) 如果我无法通过枚举访问索引,您将如何使用列表理解来编写此代码? 就像是: list2 = [x for x in list1 if 4 > ind > 0] 但是由于我没有ind电话,这行得通吗? list2 = [x for x in enumerate(list1) if 4 > ind > 0]


3
反引号对python解释器意味着什么:`num`
我正在玩列表理解,并且在另一个站点上遇到了这个小片段: return ''.join([`num` for num in xrange(loop_count)]) 我花了几分钟尝试复制功能(通过键入),然后才意识到`num`它被破坏了。 用这些字符括起来的语句有什么作用?从我所看到的相当于str(num)。但是当我计时的时候: return ''.join([str(num) for num in xrange(10000000)]) 它需要4.09秒,而: return ''.join([`num` for num in xrange(10000000)]) 需要2.43秒。 两者都给出相同的结果,但是要慢得多。这里发生了什么? 编辑:奇怪的是...repr()给出的结果比稍慢`num`。2.99秒和2.43秒。使用Python 2.6(尚未尝试3.0)。


7
Python中不带[]的列表理解
加入清单: >>> ''.join([ str(_) for _ in xrange(10) ]) '0123456789' join 必须采取迭代。 显然,join的论点是[ str(_) for _ in xrange(10) ],这是一个列表理解。 看这个: >>>''.join( str(_) for _ in xrange(10) ) '0123456789' 现在,join的参数为just str(_) for _ in xrange(10),no [],但结果相同。 为什么?是否str(_) for _ in xrange(10)还会产生列表或可迭代项?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.