Python:ASCII字母切片和连接

时间:2015-02-19 07:36:46

标签: python string ascii concatenation slice

我试图从字母表的开头剪下3个字母并将其放在最后,但我得到一个奇怪的结果。到目前为止,这是我的代码......

import string

upper = string.ascii_uppercase
upperNew = upper[:3] + upper[3:]
print upperNew

a = upper[:3]
b = upper[3:]
c = b+a
print c

运行此代码获取:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHIJKLMNOPQRSTUVWXYZABC

为什么不打印upperNew产生与print c相同的结果?

2 个答案:

答案 0 :(得分:1)

我认为你误解了":"列表的表示法。

  • upper[:3]从上方提供第一个 3个字符,而
  • upper[3:]为您提供的完整列表,但包含3个第一个字符。

最后你得到了:

upperNew = upper[:3] + upper[3:]  
         = 'ABC'     + 'DEFGHIJKLMNOPQRSTUVWXYZ'

当你将它们加到upperNew时,你会得到字母表。

ab中第二次发生同样的事情,但是你会以相反的顺序连接它们,所以你得到'DEFGHIJKLMNOPQRSTUVWXYZ' + 'ABC'+这可能就是你看起来很困惑的原因。 / p>

如果您希望upperNew给出相同的结果,您必须这样做:

upperNew = upper[3:] + upper[:3] # Note I switched the right part  
print upperNew

然后按预期打印'DEFGHIJKLMNOPQRSTUVWXYZABC'

答案 1 :(得分:0)

我的代码中出现了愚蠢的错误:

upperNew = upper[:3] + upper[3:]

应该......

upperNew = upper[3:] + upper[:3]

感谢thefourtheye等人