我正在做两个列表的集合交集,并得到一个集合作为结果。
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']
有什么建议吗?
答案 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']