我有以下代码:
CODE1 :
lis = ["a", "s", "d"]
string.join(lis)
码2 :
lis = ["a", "s", "d"]
' '.join(lis)
结果:
对于这两种情况,结果都是'a s d'
现在,当默认分离值'sep'的值与''不同时,应该存在某些情况(如果我是正确的话)。我真的想知道这种情况何时发生?
我有以下怀疑:
上述两个代码之间是否有任何区别,更具体地说是“加入” python2.x的语句。
如果'是',那么如何在python3.x中执行'code1'的任务,因为在python3.x字符串中没有模块'join'
提前感谢..
答案 0 :(得分:2)
我必须查找它 - string
的大部分已过时(由真实str
对象上的实际方法取代);因此,即使在Python 2中也应该使用' '.join
。但是,不存在 - string.join
默认连接单个空格(即' '.join
等效)。
答案 1 :(得分:2)
没有显着差异。在你可以使用第一个表单的所有情况下,第二个表单都可以工作,第二个表单将继续在Python 3上运行。
但是,有些人发现在文字字符串上编写方法调用看起来很刺耳,如果你是其中之一,那么还有一些其他选项需要考虑:
' '.join(iterable) # Maybe looks a bit odd or unfamiliar?
您可以使用名称而不是文字字符串:
SPACE = ' '
...
SPACE.join(iterable) # Perhaps a bit more legible?
或者你可以用类似于string.join()
的方式编写它,但要注意参数是相反的:
str.join(' ', iterable)
最后,高级选项是使用未绑定的方法。 e.g。
concatenate_lines = '\n'.join
...
print(concatenate_lines(iterable))
任何这些都可行,只需选择您认为最佳的选项。
答案 2 :(得分:1)
这两个陈述是等价的。
string.join(words[, sep])
连接单词列表或元组 干预发生的sep。 sep的默认值是单个 空间角色。
对于第二种情况:
str.join(iterable)
返回一个串联的字符串 可迭代迭代中的字符串。 元素之间的分隔符是 提供此方法的字符串。
由于第二个版本仍然存在于Python 3中,因此您可以毫无问题地使用该版本。
来源:
答案 3 :(得分:0)
string.join接受列表或元组作为参数,wheras“”.join接受任何可迭代的。
如果要传递列表或元组,则两个变量相等。在python3中,只有第二个变体存在于afaik