Python:如果list包含字符串打印列表中包含它的所有索引/元素

时间:2014-01-16 00:28:05

标签: python string list loops search

我能够检测到匹配但无法找到它们的位置。

给出以下列表:

['A second goldfish is nice and all', 3456, 'test nice']

我需要搜索匹配(即“nice”)并打印包含它的所有列表元素。理想情况下,如果要搜索的关键字“很好”,结果应为:

'A second goldfish is nice and all'
'test nice'

我有:

list = data_array
string = str(raw_input("Search keyword: "))
print string
if any(string in s for s in list):
    print "Yes"

所以它找到匹配并打印两者,关键字和“是”但它并没有告诉我它在哪里。

我是否应该遍历列表中的每个索引,并且每次迭代搜索“s in string”或者有更简单的方法来执行此操作?

4 个答案:

答案 0 :(得分:3)

matches = [s for s in my_list if my_string in str(s)]

matches = filter(lambda s: my_string in str(s), my_list)

请注意,'nice' in 3456会引发TypeError,这就是我在列表元素上使用str()的原因。这是否合适取决于您是否要考虑'45'是否在3456

答案 1 :(得分:2)

试试这个:

list = data_array
string = str(raw_input("Search keyword: "))
print string
for s in list:
    if string in str(s):
        print 'Yes'
        print list.index(s)

编辑工作实例。如果您只想要第一个匹配的索引,那么在if语句求值为true之后也可以中断

答案 2 :(得分:1)

print filter(lambda s: k in str(s), l)

答案 3 :(得分:1)

要打印所有包含漂亮的元素

mylist = ['nice1', 'def456', 'ghi789', 'nice2', 'nice3']
sub = 'nice'
print("\n".join([e for e in mylist if sub in e]))
>>> nice1
    nice2
    nice3

获取包含nice的元素的索引(与字母大小写无关)

mylist = ['nice1', 'def456', 'ghi789', 'Nice2', 'NicE3']
sub = 'nice'
index_list = []
i = 0
for e in mylist:
    if sub in e.lower():
        index_list.append(i)
    i +=1
print(index_list)
>>> [0, 3, 4]