我在循环中有一个if语句,如果变量与条件匹配,则将变量设置为特定的国家/地区名称,即参数包含国家/地区名称。
参数是包含不同位置国家/地区名称的路径列表,即C:\\some\\path\\text_country_text.xlsx
或C:\\some\\path\\text_text_country_text.xlsx
目前if语句很长,因为它会检查相当长的国家/地区列表。我写的代码有效,但它看起来并没有真正优化。有没有更短的方法来做到这一点?
def my_function(*args):
for country in args:
if "Australia" in country:
country_name = "Australia"
elif "Austria" in country:
country_name = "Austria"
# etc. for many countries
答案 0 :(得分:4)
假设您不确切知道国家/地区字符串中的国家/地区名称(因此您无法使用切片或正则表达式来提取相关部分),您可以调整自己的方法来获取tags.css
国家/地区,然后使用list
生成器表达式来提取国家/地区名称:
next()
示例:
next((c_name for c_name in countries if c_name in country), 'Unknown')
答案 1 :(得分:1)
只是为了它的乐趣,并显示set
的强大功能,只需一个for
循环和set.intersection()
调用即可解决此问题:
def my_function(*args):
countries = set(['Austria', 'Australia', 'Brazil', 'Denmark'])
for country_name in countries.intersection(args):
print(country_name)
因此,循环将仅循环遍及输入参数和预定义countries
集合中的国家/地区。