在python,使用,获取特定元素
我想要做这样的事情,但是在Python:在python,使用,获取特定元素
SELECT * FROM [表],其中[索引N元素] = '你好'
所以到目前为止,我有这个
cells = [' ','hello',' ',' ',' ',' ',' ',' ',' ']
emptySpots = []
for s in range(len(cells)):
if cells[s] == 'hello':
emptySpots.append(s)
这使我的细胞的索引列表与他们“你好”,但我敢打赌,那里有一个更straightforeward(pythonesque)的方式来做到这一点。
什么是更好的是一个单一的班轮只是返回等于''的单元格数量的计数。
你的问题是co nfusing。您的代码不会得到空单元的索引,而是元素hello
。
看来你有两个问题在一个吗?
如果你真的想要得到“空单元”的数量就像你在你的最后一句话权利要求,可以使用list.count
:
empty_spots = cells.count(' ')
[i for i in range(len(cells)) if cells[i] == "hello"]
或
[i for i, s in enumerate(cells) if s == "hello"]
O男人,这对我来说是新的,将不得不玩这个语法。谢谢。 – jason 2011-05-05 23:11:50
我不知道,如果你想从列表中返回匹配的元素列表(标题是“在Python,使用,获取特定元素”),或者如果你想计算它们的所有事件。您可以使用filter
或list comprehension从列表中返回匹配的元素,然后对结果调用len
来计算它发生的次数。如果你所关心的是找到一个项目出现在列表中的次数,list.count
是最好的方法。
len(filter(lambda x: 'hello' == x, cells))
len([x for x in cells if x == 'hello'])
而作为回答here(绝对,如果你只是想指望他们的最好方式!): cells.count(' ')
这里的列表理解VS过滤器的一个简单的板凳:
% python -m timeit -s "data = ['hello' for x in range(100000)]" "[x for x in data if x == 'hello']"
100 loops, best of 3: 6.97 msec per loop
% python -m timeit -s "data = ['hello' for x in range(100000)]" "filter(lambda x: x == 'hello', data)"
100 loops, best of 3: 13.3 msec per loop
任何人都想比较性能? – 2011-05-05 22:44:05
这一个不返回索引。请再次阅读该问题。 – 2011-05-05 22:44:22
我以为他只是想计算清单中的经常性项目。 – zeekay 2011-05-05 22:50:04
这篇文章中有两个无关的问题。我回答了第一个,你回答了第二个。 – 2011-05-05 22:48:26
@SvenMarnach:让我们看看OP有什么话要说...... – Trufa 2011-05-05 22:52:56
雅,我有点疑惑地问道,对不起。基本上,我的问题可以通过选择空或非空单元来解决。我不知道伯爵()可以按照你展示的方式工作,并且从那里我能够做到我想要的。谢谢。 – jason 2011-05-05 23:11:07