解释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])