为什么这个简单的连接集会返回一个意外的包装结果?

2024-06-28 20:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图把三个(十六进制代码)数字连接成一个字符串,然后发生了一些奇怪的事情

a='00'
b='01'
c='ff'

abc = ''.join(a).join(b).join(c)
print(abc)

结果是:

f0001f instead of the expected 0001ff

是什么原因造成的


Tags: ofthe字符串代码原因数字事情expected
3条回答

“join”将列表中的所有元素与其所调用的字符串连接起来

所以呢

",".join(['a', 'b', 'c']) = "a,b,c"

所以你在代码中实际做的是

''.join('00') -> "00"
'00'.join('01') -> "0001"
'0001'.join('ff') -> "f0001f"

我想你误解了join()的作用

''.join(a)将返回00,因为它将用空字符串连接a的每个字符,而不执行任何操作

但是,下一个调用将是'00'.join(b),它将b的每个字符与00连接起来,从而产生0001。然后,'0001'.join(c)将给您f0001f,因为它将来自c的字符与0001连接起来


您要查找的可能是:''.join([a, b, c]),它将三个字符串连接在一起,并将空字符串作为其“分隔符”

另一个选择是一个简单的a + b + c。这是不太优化,但字符串短,它应该没有关系

让我们一步一步看

''.join('00') => 0 '' 0 => 00
'00'.join('01') => 0 00 1 => 0001
'0001'.join('ff') => f 0001 f => f0001f

相关问题 更多 >