【问题标题】:Iterate over list to get values in a specified sequence遍历列表以获取指定序列中的值
【发布时间】:2020-02-19 22:20:45
【问题描述】:

我有一个初始元组,我试图对其进行迭代以执行进一步的计算。但是,我最终遇到了一个错误“too many values to unpack”,这是通过遵循之前提出的这个问题的建议(Python - too many values to unpack)解决的。但是,现在将其转换为列表后,我遇到了另一个错误'list' object has no attribute 'reshape'

我的代码如下所示:

Z=[([A,3],[A1,6])]  #A and A1 are 2x2 matrices 
y=[]
for data,label in Z:

    x = data.reshape((4,))
    y.append(int(label))

我可以理解错误的原因。在这种情况下,我希望循环运行两次(因为我有两组数据 [A-3,A1-6])和 data, label 为:A3A1、@ 987654329@。但它被误读为data = [A,3]label = [A1,6]

循环遍历此列表并以我想要的方式生成数据的正确方法是什么?

N.B:Z 不需要是一个列表,如果这样可以让生活更轻松,我可以将其更改为一个元组。

【问题讨论】:

  • 为什么列表中有元组?
  • 你的变量在你的代码中真的是这样命名的吗?
  • 请分享整个错误信息。 但是,现在将其转换为列表后,我有另一个错误“列表”对象没有属性“重塑”。你明白这个问题吗?
  • 使用接受的答案解决了错误。我可以理解错误的原因,但找不到替代方法。

标签: python python-3.x list numpy tuples


【解决方案1】:

元组在列表中。您只是遍历列表,而不是遍历元组元素。你需要嵌套循环。

for t in Z:
    for data, label in t:
        x = data.reshape(4,)
        y.append(int(label))

如果您摆脱列表,则不需要嵌套循环。

Z=([A,3],[A1,6])  #A and A1 are 2x2 matrices 
y=[]
for data,label in Z:
    x = data.reshape((4,))
    y.append(int(label))

【讨论】:

  • 谢谢,这解决了我的问题。但是除了将元组放在列表中之外,还有其他更简单的方法来对数据进行分组吗?
  • @Schneider 只需选择一个,列表或元组。不需要筑巢。 [[A,3],[A1,6]]([A,3],[A1,6])
  • 我最初只有一个元组Z。正如原始问题中提到的那样,这给了我一个错误。其余代码类似。
  • 您没有发布原始代码,所以我不知道您做错了什么。我已经发布了如何正确地做到这一点。
猜你喜欢
  • 2015-09-21
  • 2022-01-04
  • 1970-01-01
  • 2018-11-03
  • 2021-04-08
  • 2019-01-11
  • 2020-08-15
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多