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.