2017-09-25 38 views
0

我对Python中的列表理解有点困惑。我刚刚3个月前学习了Python,希望能够改进。我有以下方法:生成没有列表理解的等效方法

def func(self, n): 
    Arr = [random.randint(0, 2 ** 16) for _ in range(n)] 
    Arr = list(set(Arr)) 
    Arr = [('{0:0' + str(16) + 'b}').format(x) for x in Arr] 
    Arr = np.asarray([list(map(int, list(x))) for x in Arr]) 
    return Arr 

我想通过展开列表理解来生成它的等价物。我做了以下几点:

def func(self, n): 
    Arr = [] 
    for _ in range(n): 
     Arr.append(random.randint(0, 2 ** 16)) 
    Arr = list(set(Arr)) 

    for x in Arr: # This loop has an issue 
     Arr.append(('{0:0' + str(16) + 'b}').format(x)) 

    for x in Arr: # This loop has an issue 
     Arr.asarray([list(map(int, list(x)))]) 
    return Arr 

我仍然在第二个和第三个循环中有问题。任何帮助真的很感激:)

+0

尝试在每个循环(包括第一个循环)后面打印“Arr”以查找错误 – user3080953

回答

0

不要追加到列表,而迭代它们;循环只会永远持续下去。

for i in range(len(Arr)): 
    Arr[i] = '{0:016b}'.format(Arr[i]) 

不用说,列表理解远远优雅,更容易阅读和可能了解不是天真

相反,使用列表订阅每个索引更新项目为循环。

+0

不是永远只有在内存不足时:-) –

+0

@StefanPochmann那么假设他们没有在图灵机:) –

+0

非常感谢。我将尝试我自己的最后一个循环 – Lauren

相关问题