【发布时间】:2015-09-18 13:45:58
【问题描述】:
对不起标题,实在想不出一个简单的方法来解释这种情况。
所以如果我有一个字符串列表,例如:
list_1 = [ "cat", "rat", "mat" ]
我如何检查所有这些字符串是否在另一个可能有“绒毛”的列表中(我的意思是,与其说“cat”,不如说它可能有“cat_mittens”,这很好,但是“car_mittens” " 不是)。
例如:
list_A = [ "cat", "car", "cab" ]
list_B = [ "cat", "rat", "bat", "mat" ]
list_C = [ "cat_mittens", "rat", "mat" ]
在这里,如果我对 list_A 进行分析,我希望返回 False,对于 list_B,我希望返回 True,同样对于 list_C,我希望返回 True(因为它包含所有 3列表 A 的字符串,即使 "cat" 周围有额外的位(我称之为绒毛)。
我目前的做法是:
list_1 = [ "cat", "rat", "mat" ]
list_C = [ "cat_mittens", "rat", "mat" ]
temp_list = [False,] * 3
count = 0
for temp_1 in list_1:
temp_list[ count ] = any( temp_1 in temp_2 for temp_2 in list_C )
count += 1
result = all( temp_list )
还有一个复杂的问题是,在我的实际代码中,列表 C 中的所有字符串都需要包含一个额外的字符串(例如,所有都需要说“_filetype”)但这不是一个问题(我在最后一个“全部”声明)。
我的方法有效,但在我看来它很混乱(尤其是因为我将事物称为 temp,因此可能不清楚是什么。我想我可以将它们重命名为其他名称,但我想我可以'想不出任何有意义的名字来命名它们),我不确定它的效率到底有多高。
还有其他方法可以实现吗?
对不起,如果我没有很好地解释这一点!如果有什么需要澄清的,请告诉我。
【问题讨论】:
-
你想为
["ratcatmat"]返回什么? -
你的问题可能很适合codereview.SE
-
我不知道 codereview.SE,但将来肯定会在那里发布此类问题,所以感谢您让我知道!
标签: python string algorithm list python-3.x