Python:ASCII 字母切片和拼接

Python: ASCII letters slicing and concatenation

我试图从字母表的开头剪下 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 的结果与打印 c 的结果不同?

我的代码中的愚蠢错误:

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

应该是...

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

感谢 thefourtheye 等人

我认为您误解了列表的“:”符号。

  • upper[:3] 给出 first 3 个字符,而
  • upper[3:] 给你整个列表 前 3 个字符。

最后你得到:

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

将它们相加后得到 upperNew,得到字母表。

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

如果你想upperNew得到相同的结果,你必须这样做:

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

然后按预期打印 'DEFGHIJKLMNOPQRSTUVWXYZABC'