如何检查列表中是否存在多个逗号分隔的字符串

时间:2019-06-14 11:13:34

标签: python python-3.x

我正在尝试搜索列表中是否存在逗号分隔的字符串,就像列表中是否存在多个字符串一样。如何执行此操作

我尝试过这样

location = ["Bangalore", "Delhi"]
locations_list = ["Bangalore", "Delhi", "Mumbai", "Hyderabad", "Uttar Pradesh"]

if any(location in str for str in locations_list ):
    print("location present in locations list")
else:
    print("location not found")

3 个答案:

答案 0 :(得分:5)

如果您仅对是否存在任何元素感兴趣,我建议您使用设置交集来实现:

if set(location) & set(locations_list):
    print("location present in locations list")
else:
    print("location not found")

编辑:

如果要检查location中的 all 个位置是否在location_list中,建议使用集合的issubset方法:

if set(location).issubset(set(locations_list)):
    print("location present in locations list")
else:
    print("location not found")

答案 1 :(得分:1)

在您的代码中,您正在检查<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <id>testJar</id> <phase>package</phase> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> 是否在<dependency> <groupId>com.projectb</groupId> <artifactId>projectbartifactid</artifactId> <classifier>tests</classifier> </dependency> 中,而不是list是否在str中。

按如下所示更改代码:

str

答案 2 :(得分:0)

在这里,我为您提供了一个正确的实施示例。

location = ["Bangalore", "Delhi"]
locations_list = ["Bangalore", "Delhi", "Mumbai", "Hyderabad", "Uttar Pradesh"]
for location in location :
    for ref in locations_list:
        if location == ref:
            print(f"{location} present in locations list")

这是您任务的经典代表。但是,您知道嵌套循环的性能令人恐惧。

所以...我给你一个更好的实现:

    location = ["Bangalore", "Delhi"]
locations_list = ["Bangalore", "Delhi", "Mumbai", "Hyderabad", "Uttar Pradesh"]
[print(f"{location} present in locations list") for location in location for ref in locations_list if (location == ref)]

在这段代码中,我使用列表理解来提高性能,但是概念是相同的。检查第一个列表中的每个项目,并将其与其他列表中的每个项目进行比较。

也许您每次匹配都可以添加继续来提高性能。

我知道这不是执行这种搜索的最佳方法,但是它们都既简单又可运行。

PD:值得一提的是,如果您想运行较低版本的代码,请使用python 3.6+,只需在字符串前删除f