Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有可变长度列表的Format()_Python_String_List - Fatal编程技术网

Python 具有可变长度列表的Format()

Python 具有可变长度列表的Format(),python,string,list,Python,String,List,在完成codewars挑战时,我试图理解python中的format()函数。我的解决方案不像我使用if语句在特定位置插入电话号码格式那样优雅 最重要的答案是: def create_phone_number(n): return "({}{}{}) {}{}{}-{}{}{}{}".format(*n) 我知道format()将用您输入的任何参数替换每个大括号,并且列表长度不能小于大括号的数量。format()函数如何知道从n[0]开始遍历每个位置的列表,并在没有

在完成codewars挑战时,我试图理解python中的format()函数。我的解决方案不像我使用if语句在特定位置插入电话号码格式那样优雅

最重要的答案是:

def create_phone_number(n):
    return "({}{}{}) {}{}{}-{}{}{}{}".format(*n)

我知道format()将用您输入的任何参数替换每个大括号,并且列表长度不能小于大括号的数量。format()函数如何知道从n[0]开始遍历每个位置的列表,并在没有变量放入正在格式化的字符串时替换空的大括号?

*
在n用于解包之前。这意味着它被转换为一系列参数。在字符串
“1234”
的情况下,将其解压为字符
“1”、“2”、“3”、“4”

如果所有花括号都为空,则它们将隐式地用索引填充

因此,
“({}{}{}{}{}{}{}-{}{}{}{}{}{}”。格式(*n)
相当于
“({0}{1}{2}){3}{4}{5}-{6}{7}{8}{9}”。格式(*n)

索引的花括号将替换为format方法的相应参数。这意味着,如果手动向花括号中添加索引,则可以更改参数在字符串中的显示顺序,甚至可以多次插入相同的参数


您可以在文档中阅读更多信息,因为它什么都不知道
*n
将列表/元组解压为
.format()
函数的多个参数,空的
{}
表示“打印下一个参数”。@z3ke是您的问题“当您提供长度小于10的*n时会发生什么?这不是OP要求的。我现在看到了。我认为已修复。”。