我试图从字母表的开头剪下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相同的结果?
答案 0 :(得分:1)
我认为你误解了":"列表的表示法。
upper[:3]
从上方提供第一个 3个字符,而upper[3:]
为您提供的完整列表,但包含3个第一个字符。最后你得到了:
upperNew = upper[:3] + upper[3:]
= 'ABC' + 'DEFGHIJKLMNOPQRSTUVWXYZ'
当你将它们加到upperNew
时,你会得到字母表。
在a
和b
中第二次发生同样的事情,但是你会以相反的顺序连接它们,所以你得到'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等人