遍历一个没有重复的列表

时间:2019-04-05 14:14:15

标签: python list data-structures

我试图遍历下面的代码清单,但是我是python的新手,我想知道是否有机会克服两个for循环。有什么办法吗?预先感谢

temp = [0, 2, 3, 4]
for index, pointer in enumerate(temp):
    for i in range(len(temp)):
        if i != index:
           print(temp[i])

结果:

2
3
4
0
3
4
0
2
4
0
2
3

5 个答案:

答案 0 :(得分:3)

@media (min-width: 768px) {
    .some-class {
        float: right;
        width: some_width;
        height: auto;
    }     
}

@media (min-width: 481px) and (max-width: 767px) {
    .some-class {
        float: left;
        width: some_smaller_width;
        height: auto (or some specific height);
    }
}

输出

temp = [0, 2, 3, 4]
sol=[]
for i in range(len(temp)):
    sol.extend(temp[:i]+temp[i+1:])
print(sol)

答案 1 :(得分:0)

我相信这可以解决您的问题。我想象这个问题是打印与自身交叉连接的向量的元素,而不是沿着所得矩阵的对角线打印元素。

values = [0, 2, 3, 4]

for index in range(len(values)**2):
    if index % (len(values)+1) != 0:
        print(values[index % (len(values))])

输出:

2
3
4
0
3
4
0
2
4
0
2
3

答案 2 :(得分:0)

使用product中的itertools

[u for i, (j, u) in product(range(len(temp)), enumerate(temp)) if j != i]

这取决于您的列表(所有值都必须是唯一的),但这也适用于给定的输入

[v for u, v in product(temp, temp) if u != v]

都给

[2, 3, 4, 0, 3, 4, 0, 2, 4, 0, 2, 3]

您甚至可以使用圆括号(而不是方括号)在迭代器中同时打开它们。

答案 3 :(得分:0)

一种方法是使用itertools.product,它“大致等效于嵌套的for循环”。

只需提供要迭代的对象作为参数,例如您的代码将变为:

int lowestGrade = 0;  // or to anything that has meaning for your app.

或者因为您似乎不需要import itertools temp = [0, 2, 3, 4] for (index, pointer), i in itertools.product(enumerate(temp), range(len(temp))): if i != index: print(temp[i])

pointer

import itertools temp = [0, 2, 3, 4] for i, j in itertools.product(range(len(temp)), range(len(temp))): if i != j: print(temp[j]) 函数以Cartesian Product命名。

答案 4 :(得分:-1)

我提出以下解决方案。解决方案使用了list comprehension

temp = [0,2,3,4]    
(sum([ temp[0:x]+temp[x+1::]  for x in range(len(temp))],[]))

enter image description here