我正在尝试搜索列表中是否存在逗号分隔的字符串,就像列表中是否存在多个字符串一样。如何执行此操作
我尝试过这样
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")
答案 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