повторяйте каждые два элемента в списке, чтобы сделать что-то из списка python - PullRequest
0 голосов
/ 17 марта 2020

У меня есть список с именем newList, а внутри списка есть еще один список информации с кодом JSON. Я хочу повторить каждые два элемента в newList, чтобы сделать что-то для этих двух элементов.

ex: если моя newList длина равна 8, я хочу сделать для l oop или получить доступ к элементам 0 и 1, сделать что-то с информацией внутри этих двух элементов, затем go до 1 и 2 элементов и сделайте что-нибудь с этими элементами.

Мой код:

data = np.arange(len(newList))
 def pairwise(iterable):
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

  for v, w in pairwise(data):
    print(v, w)

результат печати:

0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15

Что я ищу:

0 1
2 3
4 5
6 7
8 9
10 11
12 13
14 15 

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Хотите (0, 1), (1, 2) или (0, 1), (2, 3)? Похоже, ваш вопрос говорит о том, что вы хотите один, и, кажется, о том, что вы хотите другой.

В любом случае, вот код для последнего:

#!/usr/local/cpython-3.8/bin/python3


import itertools


def test_data(n):
    # Yes, there's a simpler way of doing this.
    for i in range(n):
        yield i


def two_up(iterable):
    left_iterable, right_iterable = itertools.tee(iterable)
    left_every_other = itertools.islice(left_iterable, 0, None, 2)
    right_every_other = itertools.islice(right_iterable, 1, None, 2)
    for tuple_ in zip(left_every_other, right_every_other):
        yield tuple_


def main():
    it = test_data(10)
    for thing in two_up(it):
        print(thing)


main()
0 голосов
/ 17 марта 2020

Вы можете создать один итератор, а затем архивировать его с собой:

def pairwise(iterable):
    return zip(*[iter(iterable)]*2)

, что аналогично:

def pairwise(iterable):
    i = iter(iterable)
    return zip(i, i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...