python:join()在列表推导中用2个参数调用?

时间:2014-05-04 19:06:06

标签: python

我是python的新手。这段代码来自Mark Pilgrim的“Dive Into Python”,似乎是用2个args调用join(),它运行正常:

dirname="/usr/"
[f for f in os.listdir(dirname) if os.path.isdir(os.path.join(dirname,f))]

但如果你尝试:

smthn="data"
smthnelse="otherdata"
print "\n".join(smthn,smthnelse)

我们得到一个错误,即join()只能接受一个参数。

2 个答案:

答案 0 :(得分:4)

os.path.join将任意数量的字符串作为参数,str.join将一个参数视为提供字符串的迭代。这两个功能是单独的功能。

答案 1 :(得分:0)

请使用str.join(),如下所示:

smthn="data"
smthnelse="otherdata"

print( "\n",smthn.join(smthnelse) )

因为你在smthn>>“data”的空格之间放了smthnelse

os.path.join()看起来不像str.join

第二个用于字符串和seq 并且仅用于文件系统路径。