当前位置: 首页 > 面试题库 >

为什么是string.join(list)而不是list.join(string)?

季骏祥
2023-03-14
问题内容

这一直使我感到困惑。看起来这样会更好:

my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"

比这个:

my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"

是否有特定原因?


问题答案:

这是因为任何可迭代对象都可以连接(例如,列表,元组,字典,集合),但是其内容和“连接器” 必须是 字符串。

例如:

'_'.join(['welcome', 'to', 'stack', 'overflow'])
'_'.join(('welcome', 'to', 'stack', 'overflow'))



'welcome_to_stack_overflow'

使用字符串以外的其他东西会引发以下错误:

TypeError: sequence item 0: expected str instance, int found


 类似资料:
  • rank ▲ ✰ vote url 37 511 93 416 url 为什么是string.join(list)而不是list.join(string)? 我一直被这个问题困扰.如果这样写更好: my_list = ["Hello", "world"] print my_list.join("-") # Produce: "Hello-world" 而不是: my_list = ["Hello

  • 我试图理解背后的动机。如果已经存在类型类和,为什么有必要呢? 诚然,的实例是具体的类型,而的实例需要一个类型参数。(有关有用的解释,请参见Monoid vs MonadPlus。)但是你不能重写任何类型的约束吗 作为和的组合? 从。它的实施是: 我只能使用和实现它: 有人能澄清和之间的真正区别吗?

  • 包中的collections.list()方法返回而不是有充分的理由吗?

  • 问题内容: 在Python中,我可以执行以下操作: 有对象列表时,有什么简单的方法可以做到这一点? 还是我必须求助于for循环? 问题答案: 您可以改用列表推导或生成器表达式:

  • 我的讲师在课堂上问过我这个问题,我想知道为什么是宏而不是函数?

  • 问题内容: 我已经在Android代码中使用FloatBuffers一段时间了(从一些opengles教程中复制了它),但是我无法确切地理解此构造是什么以及为什么需要它。 例如,我在许多人的代码和android教程中看到了以下代码(或类似代码): 就我所知,这似乎是冗长和混乱的,我只是说它们只是一个浮点数的包装而已。 问题: 与任何其他类型的float集合或简单数组相反,这种类型的类(ByteBu