【问题标题】:Create 2-tuples from a list从列表中创建 2 元组
【发布时间】:2018-08-22 19:04:49
【问题描述】:

我需要从 Python 中的列表生成 2 元组,例如,在元组 (a,b)a!=b 中,如果已生成元组 (a,b),则跳过生成 (b,a)

这是我写的东西。它服务于目的。

但是,当它在 pandas dataframe 中运行时,运行起来需要一些时间。

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

我想知道是否有更快的方法来解决这个问题。

提前致谢!!

更新:

我尝试了@ThalishSajeed 的解决方案。我将它包含在一个函数中,该函数在作为输入的单词列表上完美运行。但是,当我尝试将它应用于包含单词列表的 pandas Series 时。

这是我的功能,

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]

我通过一个列表 (tuplize_faster(['Zero', 'rating', 'worst', 'service'])) 得到的结果是,

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

在包含单词列表的 pandas Series 上应用相同的函数

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

给出这个结果。

 [('[', "'"),
 ('[', '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', ']'),
 ("'", ']')]

我使用apply的方式有问题吗?

【问题讨论】:

  • 数据框是什么样的?我不明白这如何适合熊猫。你目前的表现如何(timeit)?
  • 也许先将word_list转换成一个集合,以消除重复?
  • @Constance 我认为列表已经只有独特的元素,从tuplize 函数判断。
  • @FHTMitchell 我猜这取决于“数据帧”的长度。在一个简单的列表上运行它,a = ['a', 'b', 'c'] 给了我结果和时间它给了我这条消息,The slowest run took 6.85 times longer than the fastest. This could mean that an intermediate result is being cached. 100000 loops, best of 3: 5.57 µs per loop。在dataframe 上运行它会发出以下消息:1 loop, best of 3: 1.63 s per loop
  • 您能提供示例输入和输出示例吗?

标签: python list pandas tuples


【解决方案1】:

你试过 itertools 吗? link to documentation

retObject = itertools.combinations(word_list, 2)

因为你想要 2 个元组

edits - 返回列表

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

经过编辑以表明该方法适用于 Pandas 系列。

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

【讨论】:

  • 是的,同样的代码运行良好,我重新启动了笔记本内核并再次运行。谢谢:)
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
相关资源
最近更新 更多