我正在尝试围绕列表的元素。 例如,我有一个像
这样的列表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中是否可行?
答案 0 :(得分:0)
变量word
是str
而不是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))