如何从列表中选择某些索引? (即第1,第6和第13值)

时间:2017-05-28 04:29:15

标签: python python-2.7 list for-loop

我在另一个枚举循环中有一个枚举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]选择范围,所以我假设我也可以明确选择项目。

任何人都可以解释如何实现此打印输出?

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

注意:尝试在程序中避免使用内置关键字作为变量。