我在另一个枚举循环中有一个枚举for循环,我想使用内部列表中的某些项。我想到了以下几点:
list1 = ['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']
for number, list in enumerate(list1):
for num, item in enumerate(list[0, 1, 4]):
print item
会打印出来:
a
b
e
one
two
five
1
2
5
但我收到错误TypeError: list indices must be integers, not tuple
。我知道我可以使用list1[0:5]
选择范围,所以我假设我也可以明确选择项目。
任何人都可以解释如何实现此打印输出?
答案 0 :(得分:1)
错误发生在第二个循环中:
for num, item in enumerate(list[0, 1, 4]):
您所写的内容 - list[1, 2, 5]
在两个帐户中出错了 - list()
是您在上一个循环中重新分配的保留关键字(并不重要,但您不应该这样做,期间: ),并且您传递了错误的切片构造 - 这不是如何选择这3个成员的语法。另外,索引是基于0的 - 第一个元素是0,依此类推。
根据您的方法修改了以下代码:
list1 = ['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']
for sub_list in list1:
for num in (0, 1, 4):
print sub_list[num]
无需使用enumerate()
,因为您还没有使用其索引。
答案 1 :(得分:1)
试试这个:
>>> list1 = [['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']]
>>> index1 = [1,2,5]
>>> [j for i in list1 for index,j in enumerate(i) if index+1 in index1]
['a', 'b', 'e', 'one', 'two', 'five', '1', '2', '5']
答案 2 :(得分:1)
如果您知道所需的索引,只需在特定索引处索引所述列表,然后打印这些值。
但是,您还应注意,该列表零索引。第一个值位于索引0
。这意味着你想要0,1,4,而不是1,2,5
>>> list1 = [['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']]
>>>
>>> for lst in list1:
a, b, c = lst[0], lst[1], lst[4]
print a
print b
print c
a
b
e
one
two
five
1
2
5
>>>
如果您需要更通用的解决方案,可以迭代要访问的索引,然后将其打印出来:
>>> def print_elements_at_indexs(indexes, lst):
for sublst in lst:
for index in indexes:
print(sublst[index])
>>> print_elements_at_indexs([0, 1, 4], list1)
a
b
e
one
two
five
1
2
5
>>>
答案 3 :(得分:1)
检查
[v for _list in list1 for i,v in enumerate(_list) if i in [0,1,4]]
答案 4 :(得分:0)
list1 = [['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']]
for number, lst in enumerate(list1):
for num, item in enumerate(lst):
if num in [0,1,4]:
print item
注意:尝试在程序中避免使用内置关键字作为变量。