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

时间:2016-12-23 23:39:32

标签: python arrays loops variables

我正在尝试围绕列表的元素。 例如,我有一个像

这样的列表
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中是否可行?

3 个答案:

答案 0 :(得分:0)

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

您应该使用:

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

另外,请避免使用list作为变量名称,因为它会影响内置类型。

修改

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

答案 1 :(得分:0)

为什么不建立字典?

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'

当然,对于这种情况,我同意使用更简单的语法来使用列表结果。

答案 2 :(得分:0)

你真的不需要for循环

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