python中string.join方法的疑问

python中string.join方法的疑问

原来的目的是想用一个简单的命令将一个list里的各项组成一个字符串。如:将list1=[ 'a','p','p','l','e']转换为字串:"a+p+p+l+e"。

我查了下帮助文件,发现string里的join应该能实现,help文件如下:

QUOTE:
    join(words, sep=' ')
        join(list [,sep]) ->; string
        
        Return a string composed of the words in list, with
        intervening occurrences of sep.  The default separator is a
        single space.
        
        (joinfields and join are synonymous)
   
    joinfields = join(words, sep=' ')
        join(list [,sep]) ->; string
        
        Return a string composed of the words in list, with
        intervening occurrences of sep.  The default separator is a
        single space.
        
        (joinfields and join are synonymous)

但为什么下面的命令出错呢?

[Copy to clipboard] [ - ]
CODE:
>;>;>; list1=['a','p','p','p','l','e']
>;>;>; print list1
['a', 'p', 'p', 'p', 'l', 'e']
>;>;>; str1=''
>;>;>; str1.join(list1,'+')

Traceback (most recent call last):
  File "<pyshell#27>;", line 1, in -toplevel-
    str1.join(list1,'+')
TypeError: join() takes exactly one argument (2 given)
>;>;>; str1.joinfields(list1,'+')

Traceback (most recent call last):
  File "<pyshell#28>;", line 1, in -toplevel-
    str1.joinfields(list1,'+')
AttributeError: 'str' object has no attribute 'joinfields'
>;>;>; str1=join(list1,'+')

Traceback (most recent call last):
  File "<pyshell#29>;", line 1, in -toplevel-
    str1=join(list1,'+')
NameError: name 'join' is not defined
>;>;>;

string.join(list1,'+')
再仔细看一下文档吧。你看的是string模块的join方法,因此它需要两个参数,一个是list,另一个是分隔符。而且调用时正如cnxo所示,如果你导入了 string模块:

import string
你需要使用string.join()这样来用。

但现在string对象本身就有这样方法,这样它只需要一个分隔符参数。用法为:

'+'.join(list1)

这样更pythonic,再多看一看例子和文档吧。
木头正解
谢谢以上各位!
python自带的帮助文件里,例子太少了,几乎没有!只能自己找了:( 各位老大有什么建议?:)
你要转变观念,文档是很重要,但代码更重要,它才是真正可以运行的东西。而且学习Python这类的开源软件正是需要多读源码,而且还有一点就是多做练习,多做测试,用代码去验证你的想法,而不能只靠文档就解决问题,那是不可能,也学不好的。
>;>;>;list1=['a','p','p','p','l','e']
>;>;>; print list1
['a', 'p', 'p', 'p', 'l', 'e']
>;>;>; str1=''
>;>;>; str1.join(list1[0:])
apple