【问题标题】:Range between numbers and if else statement数字和 if else 语句之间的范围
【发布时间】:2016-05-07 16:50:20
【问题描述】:

我正在慢慢自学 Python,所以这是我一直遇到的问题。

尝试逐个遍历每个数字直到最后一个数字,然后根据它所进入的范围进行计算。

NUM = []
for b in range(1,8760):
  if 3000 < b < 7000:
    NUM=500
  else:
    NUM=300
writer.writerow([NUM])

TypeError: 'int' 对象不可迭代

我也在下面尝试了这个,它运行但只打印出整个列表的一个数字,而不是在两个数字选项之间进行选择...

NUM = []
for b in range(1,8760):
  NUM = numpy.where((b > 3000) & (b < 7000), 500, 300)
writer.writerow([NUM])

【问题讨论】:

  • 您能粘贴 exact 错误及其所指的行吗?
  • NUM=300 - 你知道NUM此时不再是一个列表吗?
  • 不客气!如果有帮助,请点赞我的答案并将其标记为正确:)

标签: python list numpy range iterable


【解决方案1】:

你的意思是这个吗?

NUM = []
for b in range(1,8760):
  if 3000 < b < 7000:
    NUM.append(500)
  else:
    NUM.append(300)
writer.writerow(NUM)

【讨论】:

  • 这行得通。谢谢。现在我必须弄清楚如何在 csv 文件中垂直打印列表。再次感谢
  • 不客气!如果有帮助,请点赞我的答案并将其标记为正确:)
  • 一行:writer.writerow([map( lambda x: 500 if 3000&lt;x&lt;7000 else 300, range(1, 8760))])
  • @ccf:呃。 maplambda 太糟糕了,到时候就去 list 理解。喜欢map 的唯一原因是现有的 Python 内置函数是否可以直接完成工作,否则,列表理解会更快,并且不会更冗长(并且行为在 Py2/Py3 中是一致的):[[500 if 3000&lt;x&lt;7000 else 300 for x in range(1, 8760)]]
  • @ShadowRanger:我同意你的看法。在这种情况下,列表理解更快。所以答案是:writer.writerow([500 if 3000&lt;x&lt;7000 else 300 for x in range(1, 8760)])
【解决方案2】:

您将循环内的 NUM 更改为 500 或 300 的数字。

我认为您正在寻找的是附加到您的列表

试试:

NUM.append(500)

NUM.append(500)

这将添加到 NUM,您最终会得到一个 500 和 300 的列表,具体取决于您的 if 条件。

您可以在 python 文档中查看此结构的工作原理here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2016-08-17
    • 2014-11-11
    相关资源
    最近更新 更多