我有一个列表定义为:
pad = [unhexlify('00' * (16-j) + ('%02d' % j) * j) for j in range(1, 17)]
这将为填充oracle攻击构造一个填充列表。由于这个攻击是如何工作的,我需要循环使用元素2-16,然后如果我没有命中,返回并尝试第一个元素。循环如下:
^{pr2}$如何更改外循环定义来实现这一点?在
伪代码:
for padsel in pad (items 2-16):
do stuff until hitting a break condition
else:
do stuff on element 1
谢谢。在
不要在for循环中使用else子句,只需修改迭代的iterable(list):
使用else子句将需要在for循环的主体中复制代码,或者将主体重构为一个函数,这样就不需要重复了。但是,由于第一个项目的处理方式与其他项目相同,因此最简单的方法是通过迭代项目2到项目16,然后迭代项目1(如果需要)来组织最后一个处理项目。在
^{pr2}$最后一条语句有效地将列表的第一个元素移动到列表的末尾。如果您不介意修改列表,或者更喜欢修改列表,可以执行以下操作:
如果您需要保持原始列表不变,请尝试:
请记住,切片列表(list[x:y])将创建现有列表的副本。当与大列表一起使用时,这可能会成为内存问题。在
相关问题 更多 >
编程相关推荐