具有部分匹配的Python列表查找

时间:2011-05-24 21:46:56

标签: python

以下列表:

test_list = ['one', 'two','threefour']

如何判断项目是以“3​​”开头还是以“4”结尾?

例如,不要像这样测试成员资格:

two in test_list

我想这样测试一下:

startswith('three') in test_list

我将如何做到这一点?

4 个答案:

答案 0 :(得分:8)

您可以使用any()

any(s.startswith('three') for s in test_list)

答案 1 :(得分:6)

您可以使用以下其中一种:

>>> [e for e in test_list if e.startswith('three') or e.endswith('four')]
['threefour']
>>> any(e for e in test_list if e.startswith('three') or e.endswith('four'))
True

答案 2 :(得分:2)

http://www.faqs.org/docs/diveintopython/regression_filter.html应该有帮助。

test_list = ['one', 'two','threefour']

def filtah(x):
  return x.startswith('three') or x.endswith('four')

newlist = filter(filtah, test_list)

答案 3 :(得分:0)

如果您正在寻找一种方法,可以在条件中使用它:

if [s for s in test_list if s.startswith('three')]:
  # something here for when an element exists that starts with 'three'.

请注意,这是一个O(n)搜索 - 如果找到匹配元素作为第一个条目或沿着这些行的任何内容,它将不会短路。