python - 以两个(或更多)其他变量为条件指定 `str` 的更优雅方式

标签 python string python-3.x if-statement

我想指定一个以其他两个变量为条件的 str(将用作文件名)。假设我有一个基本名称(指定为 str 类型),file_name = 'filename.txt';我有两个变量,xy,它们可以是 NoneTypestr。我期望的可以通过以下代码实现:

if x == None and y == None:
    file_name = 'filename.txt'
elif x == 'abc' and y == None:
    file_name = 'filename_abc.txt'
elif x == None and y == 'def':
    file_name = 'filename_def.txt'
else: # both x and y are str
    file_name = 'filename_{}_{}.txt'.format(x, y)

所以基本上,如果 x(或 y)是一个非 NoneType str,则 _ 中应该有一个额外的下划线 文件名。我可以理解使用 ifelif 语句可以达到目的。但是,如果有两个以上(比如 10 个)条件变量,如 xy 怎么办?这将是相当冗长的。我想知道是否有更优雅的方式来做到这一点。

最佳答案

这个怎么样?

bits = [s for s in (x, y) if not s is None]
file_name = '_'.join(['filename'] + bits) + '.txt'

关于python - 以两个(或更多)其他变量为条件指定 `str` 的更优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42760379/

相关文章:

python - 将类似文件的对象传递给 ctypes 回调

python - 必须采用 'app_label.ModelName' 形式。"% model ValueError : Invalid model reference

Python UTF-8 转换

c - 字符数组的未定义长度

Ruby:如何检查一个字符串是否包含多个项目?

python - 读取特定输入的文件 python

python - 通过列表理解创建矩阵时的冗余变量

python - 限制从 SQL 查询返回无值

python - 为什么这两行代码不会产生相同的结果?

python-3.x - eli5 explain_weights_xgboost KeyError : 'bias'