将设置转换为列表

时间:2014-01-30 07:46:39

标签: python list set

我正在做两个列表的集合交集,并得到一个集合作为结果。

temp_set = set([('a', 'p', 'p', 'l','e')])

如果我尝试将其转换为此类列表

my_list = [list(t) for t in temp_set ]

我得到一个像这样的列表列表

[['a', 'p', 'p', 'l','e']]

我甚至尝试过:

my_list = list(temp_set)

但没有得到预期的结果。

我想要的是像

这样的列表
my_list = ['apple']

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

使用str.join

>>> s = set([('a', 'p', 'p', 'l','e')])
>>> ''.join(y for x in s for y in x)
'apple'

或:

>>> [''.join(x) for x in s]
['apple']
>>> s = set([('w', 'h', 'a', 't'), ('w', 'i', 'l','l')])
>>> [''.join(x) for x in s]
['what', 'will']

答案 1 :(得分:1)

In[30]: reduce(lambda m, n: m+n, list(temp_set)[0])
Out[30]: 'apple'

答案 2 :(得分:0)

这是一个非常奇怪的路线:

temp_set = set([('a', 'p', 'p', 'l','e')])

它正在创建一个包含单个元素的列表,即元组('a', 'p', 'p', 'l','e')。为什么额外的水平?

set是具有唯一元素的数据结构。我认为这与手头的问题毫无关系。

即使在('w', 'h', 'a', 't'), ('w', 'i', 'l','l')的情况下,你可能不需要一个集合,而是一个列表,除非你担心(并且想要消除)重复的单词(也许你这样做,但目前尚不清楚)。列表就足够了:

>>> s = [('w', 'h', 'a', 't'), ('w', 'i', 'l','l')]
>>> [''.join(x) for x in s]
['what', 'will']
>>> s = [('w', 'h', 'a', 't'), ('w', 'i', 'l','l'), ('w', 'h', 'a', 't')]
>>> [''.join(x) for x in s]   ### allow duplicates since it's a list
['what', 'will', 'what']
>>> s = set([('w', 'h', 'a', 't'), ('w', 'i', 'l','l'), ('w', 'h', 'a', 't')])
>>> [''.join(x) for x in s]   ### remove duplicates since it's a set
['what', 'will']