为什么我无法将此集转换回列表?

时间:2017-12-18 11:05:58

标签: python python-3.x list set

x = ['Book1', 'Book2', 'Book3', 'Book4', 'Book5', 'Book6']
p = ['Book1', 'Book3']
x.pop(x.index('Book2'))
print(x)
print(type(x))

这里我得到没有Book2的x,而type就是list,正如预期的那样。

x = set(x) - set(p)
list(x)
print(x)
print(type(x))

这里我的输出是:

  

{' Book4',' Book5',' Book6'}

     

class' set'

为什么x无法转换回列表? 目标是从x中删除p,我知道我可以使用列表理解来完成它,但我用它来研究提议。在此过程之后,我将向x添加更多项目,这就是为什么我需要返回list类型,否则我会收到此错误:

  

TypeError:只能连接列表(不是"设置")到列表

2 个答案:

答案 0 :(得分:7)

list(x)不到位。它将x转换为新列表并返回对它的引用,因此应将其分配回x(或其他任何内容):

x = list(x)

比较

x = set()
list(x)
print(x)
# set()

x = set()
x = list(x)
print(x)
# []

答案 1 :(得分:3)

您必须将列表(x)分配给变量

x = ['Book1', 'Book2', 'Book3', 'Book4', 'Book5', 'Book6']
p = ['Book1', 'Book3']
x.pop(x.index('Book2'))
print(x)
# ['Book1', 'Book3', 'Book4', 'Book5', 'Book6']
print(type(x))
# <type 'list'>
x = set(x) - set(p)
x = list(x)
print(x)
# ['Book4', 'Book5', 'Book6']
print(type(x))
# <type 'list'>