Python:如何通过循环创建子列表?

时间:2016-10-12 20:24:00

标签: python list loops

我有一个包含0到100之间值的元素的长列表。 我想要做的是找到我的元素占据值[0,2]的所有位置。然后找出2到4之间的所有值的位置,等等,直到98和100。

让我们拨打包含值'' list''的列表。然后让我们调用结果列表p_x。其中x表示我们找到的位置。

我设法得到了我想要的方式: p_61 = N.where((list> = 60)&(list< = 62))

我现在的问题是:我如何循环这个,以便我得到所有我想要的p_x?

1 个答案:

答案 0 :(得分:0)

import itertools

l = list(range(10))

## If you just want the values:
print([(x,y) for (x,y) in itertools.combinations(l, 2) if abs(x-y)==2])

## If you want the positions:
for i, x in enumerate(l):
    for j, y in enumerate(l):
        if j <= i:
            continue
        if abs(x-y) == 2:
            print(i, j)

## If you want them stored in lists in a dictionary:
d = {}
for i, x in enumerate(l):
    for j, y in enumerate(l):
        if j <= i:
            continue
        if abs(x-y) == 2:
            k = 'p_{}'.format(x+1)
            try:
                d[k].append((i,j))
            except KeyError:
                d[k] = [(i,j)]