解释Python .join()
我很新的Python和完全困惑.join()
,我已经阅读是连接string的首选方法。
我尝试:
strid = repr(595) print array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring().join(strid)
并得到像这样的东西:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
为什么这样工作? 595
不应该自动附加?
仔细看看你的输出:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5 ^ ^ ^
我已经突出了你的原始string的“5”,“9”,“5”。 Python join()
方法是一个string方法,它接受一个列表来joinstring。 一个更简单的例子可能有助于解释:
>>> ",".join(["a", "b", "c"]) 'a,b,c'
在给定列表的每个元素之间插入“,”。 在你的情况下,你的“列表”是string表示“595”,它被视为列表[“5”,“9”,“5”]。
看来你正在寻找+
而不是:
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring() + strid
join
以可迭代的事物为参数。 通常这是一个列表。 在你的情况下,问题是一个string本身是可迭代的,依次给出每个字符。 你的代码分解为:
"wlfgALGbXOahekxSs".join("595")
其作用与此相同:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
所以会产生你的string:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
作为迭代的string是Python最令人困惑的开始问题之一。
要附加一个string,只需将它与+
号连接即可。
例如
>>> a = "Hello, " >>> b = "world" >>> str = a + b >>> print str Hello, world
连接使用分隔符连接string。 分隔符是你在join
之前的地方。 例如
>>> "-".join([a,b]) 'Hello, -world'
Join将string列表作为参数。
join()用于连接所有列表元素。 连接两个string“+”会更有意义:
strid = repr(595) print array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring() + strid
如果你想用join来简单地连接你的两个string,你可以这样做:
strid = repr(595) print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring(), strid])