我正在尝试执行以下操作:
>>> x = (1,2)
>>> y = 'hello'
>>> '%d,%d,%s' % (x[0], x[1], y)
'1,2,hello'
但是,我有一个 long x
,超过两个项目,所以我尝试了:
>>> '%d,%d,%s' % (*x, y)
但这是语法错误。如果不像第一个示例那样进行索引,那么执行此操作的正确方法是什么?
原文由 Sait 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试执行以下操作:
>>> x = (1,2)
>>> y = 'hello'
>>> '%d,%d,%s' % (x[0], x[1], y)
'1,2,hello'
但是,我有一个 long x
,超过两个项目,所以我尝试了:
>>> '%d,%d,%s' % (*x, y)
但这是语法错误。如果不像第一个示例那样进行索引,那么执行此操作的正确方法是什么?
原文由 Sait 发布,翻译遵循 CC BY-SA 4.0 许可协议
也许看看 str.format() 。
>>> x = (5,7)
>>> template = 'first: {}, second: {}'
>>> template.format(*x)
'first: 5, second: 7'
为了完整起见,我还包括 PEP 448 描述的 _额外解包概括_。 Python 3.5 引入了扩展语法,下面不再是语法错误:
>>> x = (5, 7)
>>> y = 42
>>> template = 'first: {}, second: {}, last: {}'
>>> template.format(*x, y) # valid in Python3.5+
'first: 5, second: 7, last: 42'
然而,在 Python 3.4 及以下 版本中,如果你想在解压的元组之后传递额外的参数,你可能最好将它们作为 命名参数 传递:
>>> x = (5, 7)
>>> y = 42
>>> template = 'first: {}, second: {}, last: {last}'
>>> template.format(*x, last=y)
'first: 5, second: 7, last: 42'
这避免了需要构建一个在末尾包含一个额外元素的新元组。
原文由 plamut 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
str % ..
接受 元组 作为右手操作数,因此您可以执行以下操作:您的尝试应该在 Python 3 中工作,其中支持
Additional Unpacking Generalizations
,但在 Python 2.x 中不支持: