如下所示,在python中使用join的方式有什么不同?

时间:2015-04-10 09:40:27

标签: python python-3.x

print ("-".join("fevicol"));

输出是:

f-e-v-i-c-o-l

可是:

print ("fevicol".join("-"));

输出是:

- 

有人可以解释一下这个区别吗?

2 个答案:

答案 0 :(得分:1)

'foo'.join('bar')相当于str.join('foo', 'bar'),意味着"将'foo'放在'bar'" ,所以会导致:

>>> str.join('foo', 'bar')
'bfooafoor'

如果您切换它,str.join('bar', 'foo')表示"将'bar'放在'foo'" 中的每个字符之间,所以结果是:

>>> str.join('bar', 'foo')
'fbarobaro'

str.join操作显然不是可交换的:更改参数的顺序会产生不同的输出。


另请注意,如果第二个参数中只有一个字符,则第一个参数中没有" between-character" put的位置,所以你最后只有一个字符输出:

>>> str.join('foo', 'b')
'b'

如果查看早期输出的开头和结尾,可以看到第一个参数不是在第二个参数的第一个字符之前插入,也不是在最后一个字符之后插入。如果第二个参数是单个字符,那么该字符既是第一个也是最后一个,所以你不应该期望第一个参数插入到任何地方。

答案 1 :(得分:0)

>>> "first".join("second")
'sfirstefirstcfirstofirstnfirstd'

它是“将第一个字符串放在第二个字符串的每个字符之间”。

如果第二个字符串只是一个字符,那么第一个字符串放在哪里?所以,

>>> "first".join("s")
's'