【问题标题】:Why i can't transform this set back to a list?为什么我不能将此集合转换回列表?
【发布时间】:2017-12-18 11:05:58
【问题描述】:
x = ['Book1', 'Book2', 'Book3', 'Book4', 'Book5', 'Book6']
p = ['Book1', 'Book3']
x.pop(x.index('Book2'))
print(x)
print(type(x))

这里我得到了没有 Book2 的 x,类型是 list,正如预期的那样。

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

我的输出是:

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

类“设置”

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

TypeError:只能将列表(不是“设置”)连接到列表

【问题讨论】:

  • x.pop(x.index('Book2')) 可能是x.remove('Book2')
  • 谢谢@Chris_Rands 忘了remove(),你说得对

标签: python python-3.x list set


【解决方案1】:

list(x) 不在位。它将x 转换为一个新列表并返回对它的引用,因此它应该被分配回x(或其他任何东西):

x = list(x)

比较

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

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

【讨论】:

  • 非常感谢,不知道参考的东西
【解决方案2】:

你必须将你的 list(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'>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2011-08-22
    • 2013-12-09
    • 1970-01-01
    • 2021-08-15
    • 2017-11-26
    相关资源
    最近更新 更多