简体   繁体   中英

Create 2-tuples from a list

I need to generate 2-tuples from a list in Python, such that, in a tuple (a,b) , a!=b and if a tuple (a,b) has already been generated, skip generating (b,a) .

Here is something I have written. It serves the purpose.

However, when it is run in a pandas dataframe , it takes some good time to run.

def tuplize(word_list):
    tuple_list = []
    if len(word_list) == 1:
        return None
    else:
        for i in range(len(word_list)):
            for j in range(i+1, len(word_list)):
                a = tuple([word_list[i], word_list[j]])
                tuple_list.append(a)
        return tuple_list

I would like to know if there is a faster way to attack the problem.

Thanks in advance!!

Update:

I tried the solution by @ThalishSajeed. I enclosed it in a function and the function works perfect on a list of words as input. However, when I try applying it on a pandas Series containing list of words.

This was my function,

def tuplize_faster(word_list):
    if len(word_list) <= 1:
        return None
    else:
        ret_object = itertools.combinations(word_list, 2)
        return [tuple(i) for i in ret_object]

and the result I got on passing a single list ( tuplize_faster(['Zero', 'rating', 'worst', 'service']) ) is,

[('Zero', 'rating'),
 ('Zero', 'worst'),
 ('Zero', 'service'),
 ('rating', 'worst'),
 ('rating', 'service'),
 ('worst', 'service')]

Applying the same function on a pandas Series containing list of words

df_preprocessed['tuples'] = df_preprocessed.lemma_corrected.apply(lambda x: tuplize_faster(x)) 

gives this result.

 [('[', "'"),
 ('[', 'Z'),
 ('[', 'e'),
 ('[', 'r'),
 ('[', 'o'),
 ('[', "'"),
 ('[', ','),
 ('[', ' '),
 ('[', "'"),
 ('[', 'r'),
 ('[', 'a'),
 ('[', 't'),
 ('[', 'i'),
 ('[', 'n'),
 ('[', 't'),
 ('[', "'"),
 ('[', ','),
 ('[', ' '),
 ('[', "'"),
 ('[', 'w'),
 ('[', 'o'),
 ('[', 'r'),
 ('[', 's'),
 ('[', 't'),
 ('[', "'"),
 ('[', ','),
 ('[', ' '),
 ('[', "'"),
 ('[', 's'),
 ('[', 'e'),
 ('[', 'r'),
 ('[', 'v'),
 ('[', 'i'),
 ('[', 'c'),
 ('[', 'e'),
 ('[', "'"),
 ('[', ']'),
 ("'", 'Z'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'o'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 'r'),
 ("'", 'a'),
 ("'", 't'),
 ("'", 'i'),
 ("'", 'n'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 'w'),
 ("'", 'o'),
 ("'", 'r'),
 ("'", 's'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 ('Z', 'e'),
 ('Z', 'r'),
 ('Z', 'o'),
 ('Z', "'"),
 ('Z', ','),
 ('Z', ' '),
 ('Z', "'"),
 ('Z', 'r'),
 ('Z', 'a'),
 ('Z', 't'),
 ('Z', 'i'),
 ('Z', 'n'),
 ('Z', 't'),
 ('Z', "'"),
 ('Z', ','),
 ('Z', ' '),
 ('Z', "'"),
 ('Z', 'w'),
 ('Z', 'o'),
 ('Z', 'r'),
 ('Z', 's'),
 ('Z', 't'),
 ('Z', "'"),
 ('Z', ','),
 ('Z', ' '),
 ('Z', "'"),
 ('Z', 's'),
 ('Z', 'e'),
 ('Z', 'r'),
 ('Z', 'v'),
 ('Z', 'i'),
 ('Z', 'c'),
 ('Z', 'e'),
 ('Z', "'"),
 ('Z', ']'),
 ('e', 'r'),
 ('e', 'o'),
 ('e', "'"),
 ('e', ','),
 ('e', ' '),
 ('e', "'"),
 ('e', 'r'),
 ('e', 'a'),
 ('e', 't'),
 ('e', 'i'),
 ('e', 'n'),
 ('e', 't'),
 ('e', "'"),
 ('e', ','),
 ('e', ' '),
 ('e', "'"),
 ('e', 'w'),
 ('e', 'o'),
 ('e', 'r'),
 ('e', 's'),
 ('e', 't'),
 ('e', "'"),
 ('e', ','),
 ('e', ' '),
 ('e', "'"),
 ('e', 's'),
 ('e', 'e'),
 ('e', 'r'),
 ('e', 'v'),
 ('e', 'i'),
 ('e', 'c'),
 ('e', 'e'),
 ('e', "'"),
 ('e', ']'),
 ('r', 'o'),
 ('r', "'"),
 ('r', ','),
 ('r', ' '),
 ('r', "'"),
 ('r', 'r'),
 ('r', 'a'),
 ('r', 't'),
 ('r', 'i'),
 ('r', 'n'),
 ('r', 't'),
 ('r', "'"),
 ('r', ','),
 ('r', ' '),
 ('r', "'"),
 ('r', 'w'),
 ('r', 'o'),
 ('r', 'r'),
 ('r', 's'),
 ('r', 't'),
 ('r', "'"),
 ('r', ','),
 ('r', ' '),
 ('r', "'"),
 ('r', 's'),
 ('r', 'e'),
 ('r', 'r'),
 ('r', 'v'),
 ('r', 'i'),
 ('r', 'c'),
 ('r', 'e'),
 ('r', "'"),
 ('r', ']'),
 ('o', "'"),
 ('o', ','),
 ('o', ' '),
 ('o', "'"),
 ('o', 'r'),
 ('o', 'a'),
 ('o', 't'),
 ('o', 'i'),
 ('o', 'n'),
 ('o', 't'),
 ('o', "'"),
 ('o', ','),
 ('o', ' '),
 ('o', "'"),
 ('o', 'w'),
 ('o', 'o'),
 ('o', 'r'),
 ('o', 's'),
 ('o', 't'),
 ('o', "'"),
 ('o', ','),
 ('o', ' '),
 ('o', "'"),
 ('o', 's'),
 ('o', 'e'),
 ('o', 'r'),
 ('o', 'v'),
 ('o', 'i'),
 ('o', 'c'),
 ('o', 'e'),
 ('o', "'"),
 ('o', ']'),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 'r'),
 ("'", 'a'),
 ("'", 't'),
 ("'", 'i'),
 ("'", 'n'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 'w'),
 ("'", 'o'),
 ("'", 'r'),
 ("'", 's'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 (',', ' '),
 (',', "'"),
 (',', 'r'),
 (',', 'a'),
 (',', 't'),
 (',', 'i'),
 (',', 'n'),
 (',', 't'),
 (',', "'"),
 (',', ','),
 (',', ' '),
 (',', "'"),
 (',', 'w'),
 (',', 'o'),
 (',', 'r'),
 (',', 's'),
 (',', 't'),
 (',', "'"),
 (',', ','),
 (',', ' '),
 (',', "'"),
 (',', 's'),
 (',', 'e'),
 (',', 'r'),
 (',', 'v'),
 (',', 'i'),
 (',', 'c'),
 (',', 'e'),
 (',', "'"),
 (',', ']'),
 (' ', "'"),
 (' ', 'r'),
 (' ', 'a'),
 (' ', 't'),
 (' ', 'i'),
 (' ', 'n'),
 (' ', 't'),
 (' ', "'"),
 (' ', ','),
 (' ', ' '),
 (' ', "'"),
 (' ', 'w'),
 (' ', 'o'),
 (' ', 'r'),
 (' ', 's'),
 (' ', 't'),
 (' ', "'"),
 (' ', ','),
 (' ', ' '),
 (' ', "'"),
 (' ', 's'),
 (' ', 'e'),
 (' ', 'r'),
 (' ', 'v'),
 (' ', 'i'),
 (' ', 'c'),
 (' ', 'e'),
 (' ', "'"),
 (' ', ']'),
 ("'", 'r'),
 ("'", 'a'),
 ("'", 't'),
 ("'", 'i'),
 ("'", 'n'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 'w'),
 ("'", 'o'),
 ("'", 'r'),
 ("'", 's'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 ('r', 'a'),
 ('r', 't'),
 ('r', 'i'),
 ('r', 'n'),
 ('r', 't'),
 ('r', "'"),
 ('r', ','),
 ('r', ' '),
 ('r', "'"),
 ('r', 'w'),
 ('r', 'o'),
 ('r', 'r'),
 ('r', 's'),
 ('r', 't'),
 ('r', "'"),
 ('r', ','),
 ('r', ' '),
 ('r', "'"),
 ('r', 's'),
 ('r', 'e'),
 ('r', 'r'),
 ('r', 'v'),
 ('r', 'i'),
 ('r', 'c'),
 ('r', 'e'),
 ('r', "'"),
 ('r', ']'),
 ('a', 't'),
 ('a', 'i'),
 ('a', 'n'),
 ('a', 't'),
 ('a', "'"),
 ('a', ','),
 ('a', ' '),
 ('a', "'"),
 ('a', 'w'),
 ('a', 'o'),
 ('a', 'r'),
 ('a', 's'),
 ('a', 't'),
 ('a', "'"),
 ('a', ','),
 ('a', ' '),
 ('a', "'"),
 ('a', 's'),
 ('a', 'e'),
 ('a', 'r'),
 ('a', 'v'),
 ('a', 'i'),
 ('a', 'c'),
 ('a', 'e'),
 ('a', "'"),
 ('a', ']'),
 ('t', 'i'),
 ('t', 'n'),
 ('t', 't'),
 ('t', "'"),
 ('t', ','),
 ('t', ' '),
 ('t', "'"),
 ('t', 'w'),
 ('t', 'o'),
 ('t', 'r'),
 ('t', 's'),
 ('t', 't'),
 ('t', "'"),
 ('t', ','),
 ('t', ' '),
 ('t', "'"),
 ('t', 's'),
 ('t', 'e'),
 ('t', 'r'),
 ('t', 'v'),
 ('t', 'i'),
 ('t', 'c'),
 ('t', 'e'),
 ('t', "'"),
 ('t', ']'),
 ('i', 'n'),
 ('i', 't'),
 ('i', "'"),
 ('i', ','),
 ('i', ' '),
 ('i', "'"),
 ('i', 'w'),
 ('i', 'o'),
 ('i', 'r'),
 ('i', 's'),
 ('i', 't'),
 ('i', "'"),
 ('i', ','),
 ('i', ' '),
 ('i', "'"),
 ('i', 's'),
 ('i', 'e'),
 ('i', 'r'),
 ('i', 'v'),
 ('i', 'i'),
 ('i', 'c'),
 ('i', 'e'),
 ('i', "'"),
 ('i', ']'),
 ('n', 't'),
 ('n', "'"),
 ('n', ','),
 ('n', ' '),
 ('n', "'"),
 ('n', 'w'),
 ('n', 'o'),
 ('n', 'r'),
 ('n', 's'),
 ('n', 't'),
 ('n', "'"),
 ('n', ','),
 ('n', ' '),
 ('n', "'"),
 ('n', 's'),
 ('n', 'e'),
 ('n', 'r'),
 ('n', 'v'),
 ('n', 'i'),
 ('n', 'c'),
 ('n', 'e'),
 ('n', "'"),
 ('n', ']'),
 ('t', "'"),
 ('t', ','),
 ('t', ' '),
 ('t', "'"),
 ('t', 'w'),
 ('t', 'o'),
 ('t', 'r'),
 ('t', 's'),
 ('t', 't'),
 ('t', "'"),
 ('t', ','),
 ('t', ' '),
 ('t', "'"),
 ('t', 's'),
 ('t', 'e'),
 ('t', 'r'),
 ('t', 'v'),
 ('t', 'i'),
 ('t', 'c'),
 ('t', 'e'),
 ('t', "'"),
 ('t', ']'),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 'w'),
 ("'", 'o'),
 ("'", 'r'),
 ("'", 's'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 (',', ' '),
 (',', "'"),
 (',', 'w'),
 (',', 'o'),
 (',', 'r'),
 (',', 's'),
 (',', 't'),
 (',', "'"),
 (',', ','),
 (',', ' '),
 (',', "'"),
 (',', 's'),
 (',', 'e'),
 (',', 'r'),
 (',', 'v'),
 (',', 'i'),
 (',', 'c'),
 (',', 'e'),
 (',', "'"),
 (',', ']'),
 (' ', "'"),
 (' ', 'w'),
 (' ', 'o'),
 (' ', 'r'),
 (' ', 's'),
 (' ', 't'),
 (' ', "'"),
 (' ', ','),
 (' ', ' '),
 (' ', "'"),
 (' ', 's'),
 (' ', 'e'),
 (' ', 'r'),
 (' ', 'v'),
 (' ', 'i'),
 (' ', 'c'),
 (' ', 'e'),
 (' ', "'"),
 (' ', ']'),
 ("'", 'w'),
 ("'", 'o'),
 ("'", 'r'),
 ("'", 's'),
 ("'", 't'),
 ("'", "'"),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 ('w', 'o'),
 ('w', 'r'),
 ('w', 's'),
 ('w', 't'),
 ('w', "'"),
 ('w', ','),
 ('w', ' '),
 ('w', "'"),
 ('w', 's'),
 ('w', 'e'),
 ('w', 'r'),
 ('w', 'v'),
 ('w', 'i'),
 ('w', 'c'),
 ('w', 'e'),
 ('w', "'"),
 ('w', ']'),
 ('o', 'r'),
 ('o', 's'),
 ('o', 't'),
 ('o', "'"),
 ('o', ','),
 ('o', ' '),
 ('o', "'"),
 ('o', 's'),
 ('o', 'e'),
 ('o', 'r'),
 ('o', 'v'),
 ('o', 'i'),
 ('o', 'c'),
 ('o', 'e'),
 ('o', "'"),
 ('o', ']'),
 ('r', 's'),
 ('r', 't'),
 ('r', "'"),
 ('r', ','),
 ('r', ' '),
 ('r', "'"),
 ('r', 's'),
 ('r', 'e'),
 ('r', 'r'),
 ('r', 'v'),
 ('r', 'i'),
 ('r', 'c'),
 ('r', 'e'),
 ('r', "'"),
 ('r', ']'),
 ('s', 't'),
 ('s', "'"),
 ('s', ','),
 ('s', ' '),
 ('s', "'"),
 ('s', 's'),
 ('s', 'e'),
 ('s', 'r'),
 ('s', 'v'),
 ('s', 'i'),
 ('s', 'c'),
 ('s', 'e'),
 ('s', "'"),
 ('s', ']'),
 ('t', "'"),
 ('t', ','),
 ('t', ' '),
 ('t', "'"),
 ('t', 's'),
 ('t', 'e'),
 ('t', 'r'),
 ('t', 'v'),
 ('t', 'i'),
 ('t', 'c'),
 ('t', 'e'),
 ('t', "'"),
 ('t', ']'),
 ("'", ','),
 ("'", ' '),
 ("'", "'"),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 (',', ' '),
 (',', "'"),
 (',', 's'),
 (',', 'e'),
 (',', 'r'),
 (',', 'v'),
 (',', 'i'),
 (',', 'c'),
 (',', 'e'),
 (',', "'"),
 (',', ']'),
 (' ', "'"),
 (' ', 's'),
 (' ', 'e'),
 (' ', 'r'),
 (' ', 'v'),
 (' ', 'i'),
 (' ', 'c'),
 (' ', 'e'),
 (' ', "'"),
 (' ', ']'),
 ("'", 's'),
 ("'", 'e'),
 ("'", 'r'),
 ("'", 'v'),
 ("'", 'i'),
 ("'", 'c'),
 ("'", 'e'),
 ("'", "'"),
 ("'", ']'),
 ('s', 'e'),
 ('s', 'r'),
 ('s', 'v'),
 ('s', 'i'),
 ('s', 'c'),
 ('s', 'e'),
 ('s', "'"),
 ('s', ']'),
 ('e', 'r'),
 ('e', 'v'),
 ('e', 'i'),
 ('e', 'c'),
 ('e', 'e'),
 ('e', "'"),
 ('e', ']'),
 ('r', 'v'),
 ('r', 'i'),
 ('r', 'c'),
 ('r', 'e'),
 ('r', "'"),
 ('r', ']'),
 ('v', 'i'),
 ('v', 'c'),
 ('v', 'e'),
 ('v', "'"),
 ('v', ']'),
 ('i', 'c'),
 ('i', 'e'),
 ('i', "'"),
 ('i', ']'),
 ('c', 'e'),
 ('c', "'"),
 ('c', ']'),
 ('e', "'"),
 ('e', ']'),
 ("'", ']')]

Is there something wrong with the way I have used apply ?

Have you tried itertools? link to documentation

retObject = itertools.combinations(word_list, 2)

since you want 2 tuples

edits - To return the list

s = [tuple(i) for i in retObject]

Edited to show that the approach works for a Pandas Series.

a = pd.Series(['Zero', 'rating', 'worst', 'service'])
tuplize_faster(a)
output
[('Zero', 'rating'), ('Zero', 'worst'), ('Zero', 'service'), ('rating', 'worst'), ('rating', 'service'), ('worst', 'service')]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM