我试图遍历下面的代码清单,但是我是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
答案 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))],[]))