2024-06-28 20:33:53 发布
网友
我试图把三个(十六进制代码)数字连接成一个字符串,然后发生了一些奇怪的事情
a='00' b='01' c='ff' abc = ''.join(a).join(b).join(c) print(abc)
结果是:
f0001f instead of the expected 0001ff
f0001f
0001ff
是什么原因造成的
“join”将列表中的所有元素与其所调用的字符串连接起来
所以呢
",".join(['a', 'b', 'c']) = "a,b,c"
所以你在代码中实际做的是
''.join('00') -> "00" '00'.join('01') -> "0001" '0001'.join('ff') -> "f0001f"
我想你误解了join()的作用
join()
''.join(a)将返回00,因为它将用空字符串连接a的每个字符,而不执行任何操作
''.join(a)
00
但是,下一个调用将是'00'.join(b),它将b的每个字符与00连接起来,从而产生0001。然后,'0001'.join(c)将给您f0001f,因为它将来自c的字符与0001连接起来
'00'.join(b)
b
0001
'0001'.join(c)
c
您要查找的可能是:''.join([a, b, c]),它将三个字符串连接在一起,并将空字符串作为其“分隔符”
''.join([a, b, c])
另一个选择是一个简单的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
“join”将列表中的所有元素与其所调用的字符串连接起来
所以呢
所以你在代码中实际做的是
我想你误解了
join()
的作用''.join(a)
将返回00
,因为它将用空字符串连接a的每个字符,而不执行任何操作但是,下一个调用将是
'00'.join(b)
,它将b
的每个字符与00
连接起来,从而产生0001
。然后,'0001'.join(c)
将给您f0001f
,因为它将来自c
的字符与0001
连接起来您要查找的可能是:
''.join([a, b, c])
,它将三个字符串连接在一起,并将空字符串作为其“分隔符”另一个选择是一个简单的
a + b + c
。这是不太优化,但字符串短,它应该没有关系让我们一步一步看
相关问题 更多 >
编程相关推荐