我正在尝试不断向列表中添加值;保持这些值直到程序退出。
import sha1
def stored_hash(hash):
hashes = []
hash_extend = [hash]
hashes.extend(hash_extend)
return hashes
loop = 1
while loop == 1:
data= raw_input('Enter text to hash: ')
hash = sha1.run(data)
store = stored_hash(hash)
print store
我有一个名为sha1
的程序,它创建一个输入文本的哈希值。我希望将该哈希值存储在hashes
上方的列表中,并且每次循环完成时都能够添加更多哈希值,以便我的列表变得越来越大。
我该如何解决这个问题?我有点迷失为什么我不能将值附加到列表的末尾然后用现有的哈希值打印整个列表。我所得到的只是一个哈希值,无论循环完成多少次。
我是否需要将其列为全球列表?
答案 0 :(得分:4)
只需将列表作为参数传递:
import sha1
def stored_hash(store, hash):
store.append(hash)
store = []
loop = 1
while loop == 1:
data = raw_input('Enter text to hash: ')
hash = sha1.run(data)
stored_hash(store, hash)
print store
答案 1 :(得分:1)
这一行不会将变量hash
的内容转换为列表 - 它将所有内容放在一个新的清单中:
hash_extend = [hash]
这就是你真正想要的:
hash_extend = list(hash)
这样,变量hash
的内容将变为列表。例如:
>>> ls = [1,2,3]
>>> [ls]
[[1, 2, 3]]
>>> list(ls)
[1, 2, 3]
此外,如果您只需要扩展列表,则可以跳过转换到列表,因为我假设变量hash
已经包含了可迭代的内容:
def stored_hash(hash):
hashes = []
hashes.extend(hash)
return hashes
然而,每次调用该函数时,这都不会扩展列表。为此,将其作为第二个参数传递给函数:
def stored_hash(hash, prev_hash):
prev_hash.extend(hash)
return prev_hash
并称之为:
store = stored_hash(hash, store)
答案 2 :(得分:0)
可能是,您可以全局声明hashes
列表。
global hashes
hashes = []
编写上述部分将使其在您的程序中全局可用。