python - 对 .join() 感到困惑
问题描述
我是python新手,完全糊涂了,
为什么','.join('a','b','c')
出现错误,一个",".join(['a','b','c'])
没有。
为什么下面的代码有相同的输出?
In [3]: ",".join({'a':1,'b':2,'c':3})
Out[3]: 'b,a,c'
In [4]: ",".join({'a':2,'b':1,'c':3})
Out[4]: 'b,a,c'
In [5]: ",".join({'a':3,'b':2,'c':1})
Out[5]: 'b,a,c'
解决方案
文档说明str.join
该方法采用可以迭代的任何类型(列表、元组等): iterable
str.join(iterable)¶
返回一个字符串,它是 iterable 中字符串的串联。
TypeError
如果迭代中有任何非字符串值,包括字节对象,将引发A。元素之间的分隔符是提供此方法的字符串。
在您的第一个示例中,您将三个参数传递给一个方法,该方法期望一个接收 a TypeError
,而您在传递列表的示例中使用该方法(通过使用方括号表示)。在您键入的示例中,您传递的字典也是可迭代的,但是,当迭代时,它们会产生它们的键(注意:顺序未确定)。所以 say: {'a':1,'b':2,'c':3}
are:的键'a'
,'b'
并且'c'
由于这些都是字符串,因此该方法可以很好地用逗号将它们连接在一起
推荐阅读
- r - 如何在 R 中获得预测概率,但使用 Stata 的默认设置?
- python - 如果窗口中的按钮已经绑定到函数,如何使用按钮关闭顶级 tkinter 窗口
- objective-c - 调用参数的 NSInvocation 作为 NSNumber 时的 EXC_BAD_ACCESS
- c++ - cpprestsdk 使用 vcpkg、cmake - 找不到包含文件
- android - 如何在可绘制文件夹中找到图像的文件路径作为字符串?
- hyperlink - 如何使用 javascript (node.js) 在 Sendgrid v3 中动态设置链接
- mysql - 掉一个99G的mysql表不影响可以吗?
- android - Android中的双向流导致OOM
- javascript - 从选中的复选框Javascript中获取多个值
- c# - 安装新版本后“找到的程序集的清单定义与程序集引用不匹配”