在python中查找满足条件的所有值

odopli94  于 2021-09-29  发布在  Java
关注(0)|答案(3)|浏览(408)

我想找到一组能满足某些条件的数字。例如,查找字典中可能存在的一组单词:

testlist = "I like sunny and I like cloudy"
testlist1 = testlist.split()
dictionary = {'like': 'love'}

显然,1和5可以满足要求,但在不同位置打印将显示不同的结果。如果位置在左侧,则仅显示一个数字:

for i in range(len(testlist1)):
    if testlist1[i] in list(dictionary.keys()):
        print(i)
print(i)

即:

1
5
6

如果我添加一个参数,结果将不同:

for i in range(len(testlist1)):
    if testlist1[i] in list(dictionary.keys()):
        m = i
        print(m)
print(m)

即:

1
5
5

1和5怎么可能在列表中?

['1', '5']

多谢各位

jvidinwx

jvidinwx1#

Python式的方法:

for i, x in in enumerate(testlist1):
    if x in dictionary:
        print(i)

请注意,您可以直接迭代列表( for x in teslist1 )或使用 enumerate 并行迭代索引和元素。此外,字典也有 O(1) ,名单上有 O(N) 成员资格测试。因此,通过将字典转换为列表,您只不过是为了减少性能而更加冗长而已。
如果要收集索引,请使用条件理解:

inds = [i for i, x in enumerate(testlist) if x in dictionary]
inds
[1, 5]
ddrv8njm

ddrv8njm2#

list_of_index = []
for i in range(len(testlist1)):
    if testlist1[i] in list(dictionary.keys()):
        list_of_index.append(i)
print(list_of_index)
z9zf31ra

z9zf31ra3#

你为什么有最后一张照片?
在此代码中

for i in range(len(testlist1)):
    if testlist1[i] in list(dictionary.keys()):
        print(i)
print(i) # This one looks unnecessary

打印1和5,循环结束后打印我得到的最后一个值,即6
在此代码中

for i in range(len(testlist1)):
    if testlist1[i] in list(dictionary.keys()):
        m = i
        print(m)
print(m) # This one looks unnecessary

再次打印1和5,循环完成后,打印m得到的最后一个值,即5。

相关问题