0

我想在列表中应用两个“for”循环(彼此略有不同)。第一个“for”循环将从最小值到左侧,第二个从最小值到右侧。以下是名单:

a = [3,4,6,7,8,4,3,1,6,7,8,9,4]
# to get min index
b = a.index(min(a))
c=a[0:b+1]
d=a[b:len(a)]
for i in reversed(c):
    print i

for i in d:
    print i

例如,第一个“for”循环将从索引值 8 运行到 1,第二个“for”循环将从 8 运行到 13。我不知道如何从最小值开始以相反的方向运行循环。任何的意见都将会有帮助。

4

1 回答 1

1
>>> a = [3,4,6,7,8,4,3,1,6,7,8,9,4]
>>> b = a.index(min(a))
>>> b
7

从索引 7 运行到 0 的循环。(不是 8 到 1):

>>> for i in range(b, -1, -1):
...     print i, a[i]
...
7 1
6 3
5 4
4 8
3 7
2 6
1 4
0 3

从 8 到 12 的循环:

>>> for i in range(b+1, len(a)):
...     print i, a[i]
...
8 6
9 7
10 8
11 9
12 4

>>> a[b:None:-1]
[1, 3, 4, 8, 7, 6, 4, 3]
>>> a[b+1:]
[6, 7, 8, 9, 4]

更新

以下是获取最小值索引的更多 Pythonic 方法:

>>> min(xrange(len(a)), key=a.__getitem__)
7
>>> min(enumerate(a), key=lambda L: L[1])[0]
7
>>> import operator
>>> min(enumerate(a), key=operator.itemgetter(1))[0]
7
于 2013-08-25T06:17:04.090 回答