if set(test_string.lower()) <= set(control_string.lower()):
return True
但是我也面临一个相当复杂的任务,需要辨别控制字符串中重叠的字母是否与测试字符串中的顺序相同。
例如,
test_string = 'Dih'
control_string = 'Danish'
True
test_string = 'Tbl'
control_string = 'Bottle'
False
我考虑使用 for 迭代器来比较字母的索引,但是很难想到合适的算法。
for i in test_string.lower():
for j in control_string.lower():
if i==j:
index_factor = control_string.index(j)
我的计划是将主索引因素与下一个因素进行比较,如果主索引因素比其他因素大,则函数返回False。
我不知道如何在for循环中比较这些index_factors。
我应该如何解决这个问题?
yield i
并将其与j
进行比较?你已经知道它们是相等的。难道你不能只检查所产生的元素数量吗? - tobias_ksum(1 for _ in yield_in_order(x, control.lower())) == len(x)
,但是我收到了DeprecationWarning: generator 'yield_in_order' raised StopIteration
的警告[我不理解],即使结果是正确的。 - jppiterstr
耗尽并尝试匹配更多字符时,就会出现这种情况。使用x
进行压缩限制了从生成器中请求的项数。所以将它们进行zip
似乎是有道理的,但是==
仍然是多余的。 - tobias_ksum(1 for ...)
来实现。不过你的解决方案更清晰。 - jpp