【问题标题】:Generate a list of objects using for loop使用 for 循环生成对象列表
【发布时间】:2021-06-20 19:43:50
【问题描述】:

我看到了一些类似的问题,但仍然无法完成这项工作。假设我想生成一个可以插入另一个循环函数的对象列表。类似:

list=[y[0],y[1],y[2]]

但是这个列表的大小应该会根据 y 的长度而变化,而 y 的长度会有所不同。如果 y 包含 100 个对象,则列表应如下所示:

list=[y[0],y[1],y[2]...y[99]]

我尝试了以下方法:

ylist=[]
k=len(y)
for r in range(1,k+1):
    yn="y"+"["+str(r)+"]"
    ylist.append(yn)

这给了我:

['y[1]', 'y[2]', 'y[3]', 'y[4]', 'y[5]', 'y[6]', 'y[7]', 'y[8]', 'y[9]', 'y[10]']

但这似乎在其他函数中的工作方式与上面的“列表”相同。我试过转换成一个字符串,但这在其他函数中也不能正常工作,我猜是因为它不再是一个列表。将不胜感激。

【问题讨论】:

  • 什么是y?为什么不直接使用y
  • 什么是y?你似乎在抓取一个索引,所以它似乎已经是可迭代的(在这种情况下你可以只做list(y))。
  • 你的问题没有任何意义。请提供带有预期输出和输入minimal reproducible example。 “但这似乎在其他功能中的工作方式与上面的'列表'相同”是什么意思?你所说的没有任何意义,因为你遗漏了关于你期望什么你正在使用什么的关键细节

标签: python pandas list


【解决方案1】:

我认为这对你有帮助

y=[1,2,3,4,5]
list1=[y[0],y[1],y[2]]
list2=[y[0],y[1],y[2],y[3]]

ylist=[]
k=len(y)
for r in range(1,k+1):
    yn="y"+"["+str(r)+"]"
    val=list(yn)
    ylist.append(val)
p=3
print(ylist,y[1:p])
#

【讨论】:

  • 虽然这确实通过添加所需的eval() 以用户要求的方式回答了问题。最好先了解潜在的问题,您所呈现的内容看起来好像是在刻意编写糟糕的代码。为什么不直接list(y)
  • 是的,我想帮助他在所有情况下使用它来进行 int 和 float 并列出转换.. 但你是对的,非常感谢我必须具体,而不是 general.eval 可能是危险的测试我理解
猜你喜欢
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 2015-06-23
  • 2019-12-11
  • 2021-11-07
相关资源
最近更新 更多