list[s]
是一个字符串.为什么这不起作用?
出现以下错误:
TypeError:list indices必须是整数,而不是str
list = ['abc', 'def'] map_list = [] for s in list: t = (list[s], 1) map_list.append(t)
NPE.. 12
迭代列表时,循环变量接收实际的列表元素,而不是它们的索引.因此,在您的示例中s
是一个字符串(首先abc
,然后def
).
看起来你要做的事情基本上是这样的:
orig_list = ['abc', 'def'] map_list = [(el, 1) for el in orig_list]
这是使用名为list comprehension的Python构造.
迭代列表时,循环变量接收实际的列表元素,而不是它们的索引.因此,在您的示例中s
是一个字符串(首先abc
,然后def
).
看起来你要做的事情基本上是这样的:
orig_list = ['abc', 'def'] map_list = [(el, 1) for el in orig_list]
这是使用名为list comprehension的Python构造.
不要将名称list
用于列表.我用过mylist
下面的.
for s in mylist: t = (mylist[s], 1)
for s in mylist:
分配的元件mylist
,以s
即s
发生在第二次迭代中在第一次迭代的值"ABC"和"DEF".因此,s
不能用作索引mylist[s]
.
相反,只需:
for s in lists: t = (s, 1) map_list.append(t) print map_list #[('abc', 1), ('def', 1)]