Python list lookup with partial match

后端 未结 4 1984
有刺的猬
有刺的猬 2021-01-17 10:36

For the following list:

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

How would I find out if an item starts with \'three\' or ends with \'f

相关标签:
4条回答
  • 2021-01-17 10:40

    You could use one of these:

    >>> [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
    
    0 讨论(0)
  • 2021-01-17 10:43

    You can use any():

    any(s.startswith('three') for s in test_list)
    
    0 讨论(0)
  • 2021-01-17 10:47

    If you're looking for a way to use that in a conditional you could to this:

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

    Be aware that this is an O(n) search - it won't short circuit if it finds a matching element as the first entry or anything along those lines.

    0 讨论(0)
  • 2021-01-17 11:02

    http://www.faqs.org/docs/diveintopython/regression_filter.html should help.

    test_list = ['one', 'two','threefour']
    
    def filtah(x):
      return x.startswith('three') or x.endswith('four')
    
    newlist = filter(filtah, test_list)
    
    0 讨论(0)
提交回复
热议问题