从具有前缀的列表中获取元素



假设我有几个列表:

list = ["MacOS-1", "MacOS-2", "Windows-1", "Windows-2"]
maclist = []
windowslist = []

如何从列表中获取元素?并将它们分类到"maclist"中;或";windowslist"根据他们是否有"macos";或";Windows"在他们面前?

我在想:(我还没有测试过这个)

for element in list:
if "MacOs" in element:
maclist.append(element)
elif "Windows" in element:
windowslist.append(element)

Thanks in advance…

您可以在Python中使用startswith函数。

for element in list:
if element.startswith("MacOS"):
maclist.append(element)
elif element.startswith("Windows"):
windowslist.append(element)

在您的代码中,您不仅检查前缀,还检查任何索引范围内的所有子字符串。

或者,您可以使用下面的实现:

macos_list = [item for item in item_list if item.startswith("MacOS")]
windows_list = [item for item in item_list if item.startswith("Windows")]

你可能想看看基数树,这是最有效的方法。网上也有很多解决方案。例如,如果列表很长,你必须一遍又一遍地这样做,那么你可以对列表进行一次排序,然后对它进行log(N)的二叉查找,然后查看结果的邻域。

最新更新