保持有序值的反向索引

2024-05-18 17:42:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着写一个mod11(也许是离题)函数,我想到了这个:

print [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'[::-1])))]

>>[(6, 'A'), (5, 'B'), (4, 'C'), (3, 'D'), (2, 'E'), (1, 'F'), (0, 'G')]

如果我稍微改变一下:

print [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'))[::-1])]

>>[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E'), (5, 'F'), (6, 'G')]

有人能帮我了解一下关于reversed()[::-1]的情况吗?为什么索引被反转,而值却没有被反转?你知道吗


Tags: 函数infor情况listprintmod11enumerate
2条回答

reversed[::-1]都将反转应用它们的列表(或字符串)。你知道吗

  • 在第一种情况下,反转字符串,给出"GFE...",枚举反转字符串,给出[(0, 'G'), (1, 'F'), ...],然后再次反转枚举,得到[(6, 'A'), (5, 'B'), ...]。你知道吗

    [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'[::-1])))]
    
  • 在第二种情况下,枚举字符串,给出[(0, 'A'), (1, 'B'), ...],然后使用[::-1]反转该枚举,然后立即使用reverse再次反转该枚举,结果是[(0, 'A'), (1, 'B'), ...]。你知道吗

    [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'))[::-1])]
    

因此,在第一种情况下,字符串反转两次,索引只反转一次,而在第二种情况下,字符串中的字母和索引都反转两次,从而得到它们原来的顺序。你知道吗

别以为这里有什么特别的东西。enumerate只是将元素替换为元组(index,element)。这样做之后,其他函数对元组列表进行操作,它们包含什么并不重要。换句话说,在第一种情况下,用[::-1]反转字母,在第二种情况下,用[::-1]反转元组(索引,字母)。你知道吗

相关问题 更多 >

    热门问题