0

我有一些这样的 Python 代码:

print seq(y), '\t', ', '.join(['%s-%s'%i for i in holetbl[y]])

但我想让内部字符串生成有条件。in 循环是两个值的i元组,它们被放入%s字符串中的两个值中。在元组值相同的情况下,我只喜欢一个值,如下所示:

print seq(y), '\t', ', '.join(['%s'%i for i, j in holetbl[y]])

如何设置条件来测试是否i == j以及是否仅打印该i值,否则,以及上述原始值中的i和值?j

4

2 回答 2

1

您可以使用条件表达式

print seq(y), '\t', ', '.join('%s' % i if i == j else '%s-%s' % (i, j)
                              for i in holetbl[y])

笔记

您无需制定要传递给的列表str.join。一个简单的生成器表达式就可以了。这将更加内存友好并且相对更快

于 2013-02-26T16:06:37.593 回答
0

关于什么

'%s-%s'%(i,j) if i != j else '%s'%i
于 2013-02-26T16:07:18.327 回答