【发布时间】:2013-03-13 11:30:13
【问题描述】:
我想从包含“b”作为第一个元素的子列表中检索整数值(b 只会在列表中出现一次)
我想到了这两种方法:
foo = [["a", 5], ["b", 10], ["c", 100]]
y = filter(lambda x: x[0] == "b", foo)
print y[0][1]
z = [foo[i][1] for i in range(len(foo)) if foo[i][0] == "b"]
print z[0]
它们都有效。这两种方法中的任何一种更可取(关于运行时间),还有更好的第三种方法吗?
【问题讨论】:
-
z = [x[1] for x in foo if x[0] == 'b']甚至更干净一些。 -
或
[b for a, b in foo if a == 'b']。
标签: python list lambda list-comprehension