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

为什么是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。)但是你不能重写任何类型的约束吗 作为和的组合? 从。它的实施是: 我只能使用和实现它: 有人能澄清和之间的真正区别吗?

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

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

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

  • 从《狗的名单》中我了解到,《狗的名单》也是一份与直觉完美吻合的动物名单。从定义::[B 我从数组中了解到,狗的数组不是(不能代替a)动物的数组,这是相当违反直觉的。一组狗确实也是一组动物,但显然斯卡拉不同意。 我希望有人能直观地解释为什么数组是不变量的,最好是用狗(或猫)来解释。 这就是为什么数组是不变的,而列表是协变的?但我正在寻找一个更直观的解释,它不(严重)涉及类型系统。 与Scala的不可