我有以下脚本:
while a < 17878103347812890000:
a += 1 # increment
print(id, '#', hex(a)[2:], sep='')
我正在尝试将此脚本的操作转换为数组:
frame = xxxx.fram(xxx, [1, 2, 3, 4, 5, 6, 7, 8])
我对此问题的目标是将while
循环转换为数组,使其从0000000000000000
开始并增加到FFFFFFFFFFFFFFFF
。
答案 0 :(得分:0)
这是它的核心。我不知道原始代码中xxx
是什么或id
是什么......但这就是它
result = [ '#'+ hex(a)[2:] for a in range(0,17878103347812890000)]
答案 1 :(得分:0)
(您的代码已损坏,因此我会修复第三行被意外缩进的内容)
好的,首先让我们先解释一下初始函数的作用,然后我们就可以开发出一个解决方案:)。所以它正在做的是将所有整数值从0转换为17878103347812890000为十六进制然后打印它们,所以让我们分解代码;
while a < 17878103347812890000:
循环遍历所有整数值a += 1
只是循环的另一部分向上递增print(id, '#', hex(a)[2:], sep='')
调用三个单独的打印调用,类似于在它们之间添加“+”
id
我会忽略,因为你没有添加任何关于hex(a)[2:]
将数字转换为十六进制,然后跳过0x
部分(从第二个索引处开始)sep=''
停止分隔符打印行好的,现在首先将它向下推,然后我们将其设为for循环(重要);
for a in range(0, 17878103347812890000):
print(id, '#', hex(a)[2:], sep='')
现在我们创建一个包含这些细节的单个字符串的数组
arrayOfLines = [ str(id) + '#' + hex(a)[2:] for a in range(0, 17878103347812890000) ]
str(id)
只是因为id不是一个字符串,如果是,那么删除str(...)
部分并且只有`id +
注意:str(id) + '#' + hex(a)[2:] for a in range(0, 17878103347812890000)
只是一个for循环,但它被称为“列表理解”(你很好地理解了预设条件下的列表结构)所以它创建了一个字符串(或文本)列表,所以现在你想要要打印在一起,所以我们使用.join
所以我们写;
arrayOfLines = [ str(id) + '#' + str(hex(a)[2:]) for a in range(0, 17878103347812890000) ]
print("\n".join(arrayOfLines))
作为一个班轮;
print("\n".join([ str(id) + '#' + str(hex(a)[2:]) for a in range(0, 500)]))