【问题标题】:How to unpack a list and assign it to variable for further use(Python)? [duplicate]如何解压列表并将其分配给变量以供进一步使用(Python)? [复制]
【发布时间】:2021-10-23 23:48:01
【问题描述】:
x=[[1.0, -1.0, 0.0, 3.0], [1.0, 2.0, 3.0, 4.0], ...]

x 是一个嵌套列表

预期 o/p:

x1=[1.0, -1.0, 0.0, 3.0]
x2=[[1.0, 2.0, 3.0, 4.0]

此外,我将在不同的功能中分别使用x1x2、...。例如

x_add=x1+x2

我尝试使用循环,但无法获得预期的 o/p 我希望循环迭代到 x 的长度,并从列表 x 中提取每个子列表,并迭代地将其分配给变量 xn

【问题讨论】:

  • 你知道你要分配多少个变量(即列表的长度x)吗?
  • 欢迎来到 SO!只有当它是 2-3 个变量时才解压列表。除此之外,或者如果元素的数量未知并且您想解压缩所有元素,keep it a list。见unpack the first two elements in list/tuple

标签: python-3.x list loops list-comprehension unpack


【解决方案1】:

如果您知道列表 x 的长度,您可以将其内容分配给如下变量:

x = [[1, 2, 3], [4, 5, 6]]
x1, x2 = x
print(x1) # [1, 2, 3]
print(x2) # [4, 5, 6]

如果您不知道x 列表的长度,您几乎肯定最好不要尝试以这种方式解决您的问题!因此,在警告您这确实不是一个好主意后,您可以使用exec()

x = [[1, 2, 3], [4, 5, 6]]
for i, _x, in enumerate(x):
   exec(f"x{i+1} = _x")

print(x1) # [1, 2, 3]
print(x2) # [4, 5, 6]

这是一个重大的安全风险,会使您的代码非常难以阅读和调试,不是对变量类型的良好使用,应该绝对避免。

【讨论】:

  • 感谢您的回答。实际上 X 根据用户输入而变化,我需要将 Xn 值分配给 n 个变量
  • 稍后在您的代码中,您如何知道x5 是否已定义?你能解释一下你想要达到的目标吗?
  • 我希望循环迭代到 X 的长度并从列表 X 中提取每个子列表并迭代地将其分配给变量 Xn
  • 我明白,我的意思是这将使您的其余代码变得非常困难。这就像让水管工拆除你家的水龙头——他们会理解你要求他们做什么,但会告诉你这不是一个好主意。你为什么要这么做?如果您因为水龙头太难转动而卸下水龙头,那么您的水管工最好还是修理它!
  • 我已经完成了你的回答
猜你喜欢
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
  • 2016-06-14
  • 2023-02-09
  • 1970-01-01
  • 2016-02-10
  • 2020-08-11
  • 2018-08-23
相关资源
最近更新 更多