首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移植代码段

移植代码段
EN

Stack Overflow用户
提问于 2011-01-31 08:27:36
回答 4查看 147关注 0票数 2

我有以下代码:

code1

代码语言:javascript
复制
lis = ["a", "s", "d"]
string.join(lis)

code2

代码语言:javascript
复制
lis = ["a", "s", "d"]
' '.join(lis)

结果:

这两种情况的结果都是'a s d'

现在,应该有一些情况(如果我是正确的),当'sep‘的值与’‘不同时,它是默认的分隔值。我真的很想知道这些个案是何时发生的?

我有以下疑问:

在python2.x.

  • If 'yes‘的情况下,上述两种代码之间是否有任何区别,特别是在“联接”语句中,那么我如何在python3.x中执行'code1’的任务,因为在python3.x字符串中没有模块‘

’。

提前谢谢..。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-31 08:29:44

这两种说法是等价的。

string.join( words,sep)将一个或多个单词组与插入的sep连接在一起。sep的默认值是单个空格字符。

至于第二个案件:

str.join(迭代)返回一个字符串,该字符串是可迭代迭代中字符串的级联。元素之间的分隔符是提供此方法的字符串。

由于第二个版本仍然存在于Python 3中,所以您可以使用该版本,而不会出现任何问题。

资料来源:

  • Python 2.7.1 documentation of string.join() (static method)
  • Python 2.7.1 documentation of join() (string method)
票数 1
EN

Stack Overflow用户

发布于 2011-01-31 08:32:24

我不得不查找它-- string的很大一部分已经过时(用真实的str对象上的实际方法代替);因此,即使在Python2中,也应该使用' '.join。但是没有,用单个空格连接string.join是没有区别的(即' '.join是等效的)。

票数 2
EN

Stack Overflow用户

发布于 2011-01-31 09:21:19

无显着性差异。在所有可以使用第一种形式的情况下,第二种形式将有效,而第二种形式将继续在Python 3上工作。

但是,有些人发现,在文字字符串上编写方法调用看起来很不舒服,如果您是其中之一,那么还有一些其他选项需要考虑:

代码语言:javascript
复制
' '.join(iterable) # Maybe looks a bit odd or unfamiliar?

您可以使用名称而不是文字字符串:

代码语言:javascript
复制
SPACE = ' '
...
SPACE.join(iterable) # Perhaps a bit more legible?

或者您可以使用类似于string.join()的方式编写它,但是要注意,参数是相反的:

代码语言:javascript
复制
str.join(' ', iterable)

最后,高级选项是使用未绑定方法。例如:

代码语言:javascript
复制
concatenate_lines = '\n'.join
...
print(concatenate_lines(iterable))

其中任何一个都会有效,只要选择你认为读起来最合适的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4848862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档