是否可以在 python for 循环中创建变量数组?

我正在尝试围绕列表的元素进行游戏。例如,我有一个类似的列表

list = ["zone", "abigail", "theta", "form", "libe", "zas"]

现在我想创建一个 for 循环并将不同的单词分配给循环中的不同变量,例如......

word = ""
length = 0
for e in range(len(list)):
    word[e] = list[e]
    length[e] = len(list[e])
    print " The word '%s' and its length is %d " %(word[e], length[e])

我现在期待变量数组

word[1] = 'zone'
word[2] = 'abigail' .... and so on.

这在python中可能吗?

stack overflow Is it possible to create array of variables in a python for loop?
原文答案

答案:

作者头像

变量 wordstr 而不是 list 。不要试图索引它!与 length 相同,它是一个 int 变量!

你应该使用:

word = list[e]
length = len(list[e])

另外,避免使用 list 作为变量名,因为它会隐藏内置类型。

编辑:

如果您希望列表中的所有单词都在末尾,您可以使用在开头声明的 list 变量。如果您希望将所有长度存储在列表中,请将 lengths = 0 更改为 lengths = [] 并将每个长度附加到 for 循环中 ( lengths.append(len(list[e]) )

作者头像

为什么不建立字典呢?

a_list = ["zone", "abigail", "theta", "form", "libe", "zas"]
my_dict = {k: len(k) for k in a_list}

然后你可以像这样使用它:

for kk, vv in my_dict.iteritems():
    print("The word '{}' has lenght: {}".format(kk, vv))

如果要连接两个最长的单词,则可以按值对字典进行排序,即:

import operator
sorted_dict = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)

然后连接第一个结果:

sorted_dict[0][0] + sorted_dict[1][0]

这导致:

>>> 'abigailtheta'

当然,在这种情况下,我同意使用列表会产生更简单的语法。

作者头像

你真的不需要 for 循环

lst = ["zone", "abigail", "theta", "form", "libe", "zas"]
word = lst[:] 
length = list(map(len, word))