(Python 3)有人能解释下面的输出吗?

(Python 3)有人能解释下面的输出吗?,python,python-3.x,Python,Python 3.x,我开始学习Python,但我对字符串格式一窍不通。我只是在玩代码,但我不明白为什么会发生下面的行为 有人能解释一下吗 代码: nums = [4, 5, 6] msg = "Numbers: {0} {2} {1} {2}". format(nums[1], nums[2], nums[1]) print(msg) 输出: Numbers: 5 5 6 5 您正在使用格式功能。 它将采用括号中定义的{format function中的参数数} 让我们对msg行进行一些预处理: nums =

我开始学习Python,但我对字符串格式一窍不通。我只是在玩代码,但我不明白为什么会发生下面的行为

有人能解释一下吗

代码:

nums = [4, 5, 6]
msg = "Numbers: {0} {2} {1} {2}". format(nums[1], nums[2], nums[1])
print(msg)
输出:

Numbers: 5 5 6 5 

您正在使用
格式
功能。
它将采用括号中定义的
{format function中的参数数}

让我们对msg行进行一些预处理:

nums = [4, 5, 6]
msg = "Numbers: {0} {2} {1} {2}". format(nums[1], nums[2], nums[1])
等于

   msg = "Numbers: {0} {2} {1} {2}". format(5, 6, 5)
因为您正在按索引(基于0的索引)从
nums
列表中获取元素

最后,格式中的
{number}
将从参数中获取:

msg = "Numbers: 5 5 6 5". format(5, 6, 5)
所以
{0}
{2}
等于5和
{1}
等于6

我从未使用过python,但答案对我来说似乎很简单

   nums = [4, 5, 6]
这意味着nums[0]=4,nums[1]=5,nums[2]=6

现在在

    msg = "Numbers: {0} {2} {1} {2}". format(nums[1], nums[2], nums[1])
这意味着按顺序,它将给出0,1,2的值

   {0} = nums[1] 
   {1} = nums[2] 
   {2} = nums[1]
所以最终的结果是

   {0} = nums[1] = 5
   {2} = nums[1] = 5
   {1} = nums[2] = 6
   {2} = nums[1] = 5

因此,您得到的结果5565

分别是
{0}
{1}
{2}
引用值
nums[1]
nums[2]
nums[1]
(或分别是5、6和5)。因此,当你写作时:

"Numbers: {0} {2} {1} {2}"
这真的很像写作:

Numbers: nums[1] nums[1] nums[2] nums[1]
或者


以上都是等价的

谢谢你的回答。我清楚地理解字符串格式问题。
Numbers: 5 5 6 5