How to separate elements of tuples into occurrences of pairs in Python?

python tuple
list of tuples python
tuple inside list python
count number of elements in tuple python
python tuple count() method
python dictionary
list in python
python tuple methods

I have a tuple that looks like: t=(('a','b'),('a','c','d','e'),('c','d','e'))

I need to rearrange it so I have a new tuple that will look like: t2=(('a','b'),('a','c'),('c','d'),('d','e'),('c','d'),('d','e'))

Basically the new tuple takes pairs (of 2) from each element of the old tuple. But I am not sure how to get started. Thanks for your help.

Try this out :

 tuple([(t[i][j],t[i][j+1]) for i in range(len(t)) for j in range(len(t[i])-1)])
#[('a', 'b'), ('a', 'c'), ('c', 'd'), ('d', 'e'), ('c', 'd'), ('d', 'e')]

You can also try another way. If the problem is reduced to do this for one tuple alone :

def pairs(my_tuple):
    return [(my_tuple[i],my_tuple[i+1]) for i in range(len(my_tuple)-1)]

Then this can be mapped for all the tuples

tuple(sum(list(map(pairs,t)),[]))
#(('a', 'b'), ('a', 'c'), ('c', 'd'), ('d', 'e'), ('c', 'd'), ('d', 'e'))

Explanation :

map(pairs,t)       : maps the function pairs for every element in tuple t
list(map(pairs,t)) : output of the above
                      But as a nested list 
                      [[[('a', 'b')], [('a', 'c'), ('c', 'd'), ('d', 'e')],...]
sum(list(...),[])   : Flattens out this nested list for the desired output

How to split Python tuples into sub-tuples?, How do you access the elements of a tuple in Python? a is a tuple of three elements and (one,two,three) is a tuple of three variables. Assigning (one,two,three) to a tuple assigns each of the values of a to each of the variables: one, two and three, in order. This can be handy when you have to assign a range of values to a sequence stored in a tuple.

Use a generator expression with zip to pair and convert to a tuple at the end:

>>> t = (('a','b'),('a','c','d','e'),('c','d','e'))
>>> tuple((x) for tupl in t for x in zip(tupl, tupl[1:]))
(('a', 'b'), ('a', 'c'), ('c', 'd'), ('d', 'e'), ('c', 'd'), ('d', 'e'))                                               

How to split a list in half in Python, to form a new tuple, though it cannot modify an existing tuple. I have a large list of two element tuples. I want two separate lists: One list with the first element of every tuple, and the second list with the second element of every tuple. Each tuple contains a datetime object followed by an integer. Here is a small sample of the original list: ((datetime.datetime(2005, 7, 13, 16, 0, 54), 315),

Here's what I came up with really quick

def transform(t):
    out = []
    for tup in t:
        for i in range(0, len(tup) - 1):
            out.append((tup[i], tup[i+1]))
    return tuple(out)

Tuples in Python 3, The join function can be used to join each tuple elements with each other and list Python | Pandas str.join() to join string/list elements with passed delimiter Python | Ways to join pair of elements in list · Python - Count elements in tuple list tuple list to string list · Python | Merge list of tuple into list by joining the strings  Splitting a tuple inside a list Home. Programming Forum [tuple(x.split(' - ') for x in tup) for tup in lst if len(tup) == 1] calling a variable from a

You can use this easy to understand code:

t = (('a','b'),('a','c','d','e'),('c','d','e'))
t2 = []
for i in t:
    for j in range(len(i)-1):
           t2.append((i[j], i[j+1]))
t2 = tuple(t2)

Obviously it isn't very optimized like other answers but for an easy understanding it will be perfect.

That is something equivalent to:

t2 = tuple((i[j], i[j+1]) for i in t for j in range(len(i)-1))

That is a generator expression, something quite similar to list comprehension (it use brackets instead of square brackets) and they basically do similar things, or at least in basic codes like this one. I still don't understand very well their differences but the generators are one-time fasters while the list comprehension are slower but reusable...

Nevermind: the generator means:

t2 = tuple(...) # Make with the result array a tuple, otherwise it will be a list.
for i in t # Iterate over each item of t, they will by called i.
for i in t for j in range(len(i)) # Iterate over each item of t --called--> i and then iterate over the range(len(i)) --called--> j. 
(i[j], i[j+1]) for i in t for j in range(len(i)) # The same as before but each time we get a new j (each time the second loop iterate) do --> (i[j], i[j+1])

I know, make two generator/list expression/comprehension on the same line is strange. I always look at an answer like this one to remember how to do that.

My old answer was:

t = (('a','b'),('a','c','d','e'),('c','d','e'))
t2 = []
for i in t:
    for j in range(len(i)):
        if j < len(i) - 1:
           t2.append((i[j], i[j+1]))
t2 = tuple(t2)

But I notice that adding a -1 to the len() of the loop I can avoid that line, because I won't never get an out of index error.

Python, Return the index in the list of the first item whose value is x. A tuple consists of a number of values separated by commas, for instance: Empty tuples are constructed by an empty pair of parentheses; a tuple with Another useful data type built into Python is the dictionary (see Mapping Types — dict). This program divides a string into a list of tuples. Each tuple has adjacent characters from the string. Range: We use the range built-in to iterate over the string, with a step of 2. We start at index 1 to avoid the first char. Append: We call append() on the list (called "pairs") and as the argument to append, we create a two-element tuple (a

5. Data Structures, Here's a one-liner that does something similar from collections import Counter import itertools as it c  Python Tuple count() The count() method returns the number of occurrences of an element in a tuple. In simple terms, count() method searches the given element in a tuple and returns how many times the element has occurred in it.

Python - creating pairs of tuples from, Learn about Python tuples: what they are, how to create them, when to use them, what count() returns the number of occurrences of an item in a tuple. item in a tuple, Python assumes that you mistakenly added an extra pair of The string '​Apple' is automatically converted into a sequence of characters. In this tutorial, learn how to unpack tuple pairs in list with Python. The list contains tuple elements with two in pairs. Get each tuple with paired elements after unpacking using the methods given here. The list is a similar element as that or array in other programming languages. Here, the list elements are tuple enclosed within the round

Python Tuples Tutorial, How To Count Occurrences Of A List Item In Python; How To Split A List Now practice converting your list listOfStrings into a tuple and a set here: that 'hello' and 'world' and '1' and '2' are interpreted as key-value pairs. In this article we will discuss how to Append, Insert, Replace and Delete elements from a tuple in python. In Python, tuples are immutable i.e. once created we can not change its contents. But sometimes we want to modify the existing tuple, in that case we need to create a new tuple with updated elements only from the existing tuple.

Comments
  • okay, great. Problem has been given. Where's the code?
  • sorry I really don't know how to get started with code for this problem.
  • @CWeeks Made some new additions too :)
  • @SruthiV tuple(sum(list(map(pairs,t)),[])) is not a very efficient way to flatten this: tuple(y for x in map(pairs, t) for y in x) would do the same without creating lots of intermediate lists.
  • There is no need to use a list comprehension instead of just a generator expression in this case.
  • Very minor: you also don't need to unpack and then pack x, y - x for tupl in t for x in zip(...) would be sufficient.
  • @AChampion that's even shorter now. Thanks for your comment.
  • @CWeeks glad I could help you.
  • You are welcome! I will also add a bit better way but I will try to explain it
  • You are missing your for i in t: loop in your initial explanation and old answer.