我是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 + (n))
if n is 62:
return '-'
if n is 63:
return '+'
令牌将数字(n)转换为字符。大写和小写字母,包括字符“ - ”和“+”。
def encode (n):
a = n // 1 % 64
b = n // 64 % 64
c = n // 64 ** 2 % 64
d = n // 64 ** 3 % 64
e = n // 64 ** 4 % 64
f = n // 64 ** 5 % 64
return (token(a) + token(b) + token(c) + token(d) + token(e) + token(f))
这是编码的其余部分。
print(encode(1234567890))
'IBWb91'
同样,有没有办法为输出创建六个字符的订单?
这是我到目前为止所拥有的。我从现有的问题中得到了这个。
How can I reorder a list in python?
mylist = ['a','b','c','d','e','f',]
myorder = [6,5,4,3,2,1]
mylist = [ mylist[i] for i in myorder]
但......它给了我这个:
IndexError: list index out of range
我想要发生什么:
>>> print(mylist)
['f','e','d','c','b','a']
我对此完全陌生。请帮助:)
答案 0 :(得分:2)
如果您只想撤销列表,只需拨打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]
,那么您将获得IndexError
。你可能想要的是[5, 4, 3, 2, 1, 0]
。
答案 1 :(得分:1)
python中的列表从0
开始编制索引,而不是从1
开始编制索引。如果您想使用您显示的方法重新排序n
- 元素列表,则需要有一个包含数字0,1,...,n - 1
的列表,因为尝试访问n
的元素n
1}} - 元素列表将给出一个
错误,因为索引将超出预期范围。
例如,根据你提供的内容,
mylist = ['a','b','c','d','e','f']
myorder = [5,4,3,2,1,0]
mylist = [mylist[i] for i in myorder]
答案 2 :(得分:1)
订单必须为零索引。这就是python列表的工作方式 - 第一个元素是mylist[0]
,第二个元素是mylist[1]
,等等。因此,它应该是[5,4,3,2,1,0]
。