Python 重新排列36位数字?
我是Python的业余爱好者,我制作了一个程序,可以对长字符串进行编码并输出6个字符Python 重新排列36位数字?,python,encode,Python,Encode,我是Python的业余爱好者,我制作了一个程序,可以对长字符串进行编码并输出6个字符 def token (n): if n < 10: return chr( ord( '0' ) + (n) ) if n in range (10, 36): return chr( ord( 'A' ) - 10 + (n)) if n in range (37, 62): return chr( ord( 'a' ) - 36
def token (n):
if n < 10:
return chr( ord( '0' ) + (n) )
if n in range (10, 36):
return chr( ord( 'A' ) - 10 + (n))
if n in range (37, 62):
return chr( ord( 'a' ) - 36 + (n))
if n is 62:
return '-'
if n is 63:
return '+'
这是编码的其余部分
print(encode(1234567890))
'IBWb91'
同样,是否有方法为输出的六个字符创建顺序
这就是我目前所拥有的。我从一个现存的问题中得到了这个
但是…它给了我这个:
IndexError: list index out of range
我想发生的事:
>>> print(mylist)
['f','e','d','c','b','a']
我对这个完全陌生。请帮助:)python中的列表是从
0
开始索引的,而不是从1
开始索引的。如果您想用显示的方法对n
-元素列表重新排序,则需要一个包含编号0,1,…,n-1
的列表,因为尝试访问n
-元素列表中的元素n
,将给出一个
错误,因为索引将超出预期范围
比如说,你所付出的
mylist = ['a','b','c','d','e','f']
myorder = [5,4,3,2,1,0]
mylist = [mylist[i] for i in myorder]
python中的列表从
0
开始编制索引,而不是从1
开始编制索引。如果您想用显示的方法对n
-元素列表重新排序,则需要一个包含编号0,1,…,n-1
的列表,因为尝试访问n
-元素列表中的元素n
,将给出一个
错误,因为索引将超出预期范围
比如说,你所付出的
mylist = ['a','b','c','d','e','f']
myorder = [5,4,3,2,1,0]
mylist = [mylist[i] for i in myorder]
顺序必须为零索引。python列表就是这样工作的——第一个元素是
mylist[0]
,第二个元素是mylist[1]
,等等。因此,它应该是[5,4,3,2,1,0]
顺序必须为零索引。python列表就是这样工作的——第一个元素是mylist[0]
,第二个元素是mylist[1]
,等等。因此,它应该是[5,4,3,2,1,0]
如果您只想反转列表,只需调用reverse
方法或reversed
函数:
>>> mylist = ['a','b','c','d','e','f']
>>> list(reversed(mylist))
['f', 'e', 'd', 'c', 'b', 'a']
如果您想以艰难的方式完成,您可以,但您必须使用列表中实际包含的索引:
>>> [i for i, e in enumerate(mylist)]
[0, 1, 2, 3, 4, 5]
这些是列表中的索引。6不是其中之一。因此,如果您尝试使用
mylist[6]
您将得到一个索引器。您可能想要的是[5,4,3,2,1,0]
如果您只想反转列表,只需调用reverse
方法或reversed
函数:
>>> mylist = ['a','b','c','d','e','f']
>>> list(reversed(mylist))
['f', 'e', 'd', 'c', 'b', 'a']
如果您想以艰难的方式完成,您可以,但您必须使用列表中实际包含的索引:
>>> [i for i, e in enumerate(mylist)]
[0, 1, 2, 3, 4, 5]
这些是列表中的索引。6不是其中之一。因此,如果您尝试使用mylist[6]
您将得到一个索引器。您可能想要的是[5,4,3,2,1,0]
您只是想反转列表,还是需要更复杂的东西?您只是想反转列表,还是需要更复杂的东西?