从 python 中的集合列表中删除大括号
remove curly brackets from a list of sets in python
我的代码看起来像这样:
documents=set()
finals = []
temporary_set= set()
temporary_set.add(i)
finals.append(documents.intersection(temporary_set))
当我想从我使用的决赛列表中获取所有值时:
for final in finals:
print (final)
这 returns 但是项目作为列表中的集合项目。像这样:
[{27309053}, {23625724}, {25051134}]
我怎样才能使大括号被省略并且我的结果看起来像这样:
[27309053, 23625724, 25051134]
???
您可以使用 itertools.chain.from_iterable
展平您的集合列表:
import itertools
x = [{27309053}, {23625724}, {25051134}]
list(itertools.chain.from_iterable(x))
# [27309053, 23625724, 25051134]
您可以使用 list comprehension:
l = [{27309053}, {23625724}, {25051134}]
[x for sl in l for x in sl] # evaluates to [27309053, 23625724, 25051134]
你可以改变
finals.append(documents.intersection(temporary_set))
到
finals.extend(documents.intersection(temporary_set))
这会将交集的每个元素添加到列表中,而不是交集本身。
使用 修复上游代码是解决问题的方法。
如果你最终得到一个列表
l = [{27309053}, {23625724}, {25051134}]
在您无法修改其创建方式的地方,您可以像这样使用可迭代解包:
>>> l = [{27309053}, {23625724}, {25051134}]
>>> [x for x, in l]
>>> [27309053, 23625724, 25051134]
我的代码看起来像这样:
documents=set()
finals = []
temporary_set= set()
temporary_set.add(i)
finals.append(documents.intersection(temporary_set))
当我想从我使用的决赛列表中获取所有值时:
for final in finals:
print (final)
这 returns 但是项目作为列表中的集合项目。像这样:
[{27309053}, {23625724}, {25051134}]
我怎样才能使大括号被省略并且我的结果看起来像这样:
[27309053, 23625724, 25051134]
???
您可以使用 itertools.chain.from_iterable
展平您的集合列表:
import itertools
x = [{27309053}, {23625724}, {25051134}]
list(itertools.chain.from_iterable(x))
# [27309053, 23625724, 25051134]
您可以使用 list comprehension:
l = [{27309053}, {23625724}, {25051134}]
[x for sl in l for x in sl] # evaluates to [27309053, 23625724, 25051134]
你可以改变
finals.append(documents.intersection(temporary_set))
到
finals.extend(documents.intersection(temporary_set))
这会将交集的每个元素添加到列表中,而不是交集本身。
使用
如果你最终得到一个列表
l = [{27309053}, {23625724}, {25051134}]
在您无法修改其创建方式的地方,您可以像这样使用可迭代解包:
>>> l = [{27309053}, {23625724}, {25051134}]
>>> [x for x, in l]
>>> [27309053, 23625724, 25051134]