Abdul Basit Niazi
Abdul Basit Niazi

Reputation: 7

Make only identical pairs in python list

How to create pairs in python list . list = [1,2,3,4,5,6,7] i want to compare (1,2),(3,4) (5,6)

identical pairs comparison

how can we loop through all the pairs

Upvotes: 0

Views: 140

Answers (4)

Alik.Koldobsky
Alik.Koldobsky

Reputation: 349

If I understand you correctly, you want to take the list and create all possible pairs. To do that, you should use itertools.

Take a look at the following topic: How to split a list into pairs in all possible ways.

import itertools
list(itertools.combinations(range(6), 2))
#[(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]

Upvotes: 0

pppig
pppig

Reputation: 1275

It will use a moving cursor for slicing to get the value.

def func(l):
    prev_i, i = 0, 2
    while True:
        current = l[prev_i: i]
        if len(current) < 2:
            break
        yield current
        prev_i, i = i, i + 2


print(list(func([1,2,3,4,5,6,7])))

Output:

[[1, 2], [3, 4], [5, 6]]

Upvotes: 0

XxJames07-
XxJames07-

Reputation: 1826

you could do something like this:

list = [1,2,3,4,5,6,7]
def chunks(lst, n):
    """Yield successive n-sized chunks from lst."""
    for i in range(0, len(lst), n):yield lst[i:i + n]    
sublist = [x for x in chunks(list, 2)]
for x in sublist:
    if x.__len__() > 1:continue
    else:sublist.remove(x)
print(sublist)

Output:

[[1,2],[3,4],[5,6]]

Upvotes: 0

mozway
mozway

Reputation: 260335

You can use zip and slice the input list every two items with different starting points:

lst = [1,2,3,4,5,6,7]

list(zip(lst[::2], lst[1::2]))

output: [(1, 2), (3, 4), (5, 6)]

Upvotes: 1

Related Questions