将字符串列表附加到函数中的新列表

2024-09-27 21:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到一个类型错误,我不明白。我想编一个比一般月份更好/更差的月份的列表,并在另一个列表中列出月份名称来标记它们。这还是很新的,所以我打赌有一个真正直观的方法来做这件事,我还不知道。 注释包括以下类型:

good= [] #---- float
bad= [] #---- float
goodmonths = [] #---- string (month names)
badmonths = [] #---string

for i in net: #----float
    if i > average: #---also float
        good.append(i)
        goodmonths.append(months[i])
    elif i < average:
        bad.append(i)
        badmonths.append(months[i])

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-136-362a333d8546> in <module>()
      6     if i > average:
      7         good.append(i)
----> 8         goodmonths.append(months[i])
      9     elif i < average:
     10         bad.append(i)

TypeError: list indices must be integers or slices, not float

我想接收这样的输出:

Good months:
Jan: 1292.23
Feb: 1738.09
etc... ditto for badmonths

Tags: in类型列表forstringiffloatbad
3条回答

看起来您正试图使用一个浮点变量(i)来集成循环,它们必须是直整数。你知道吗

我认为您试图以两种不兼容的方式使用一个变量:作为列表索引相应的值。试试这个:

for mon in range(12): #----float
    i = net[mon]
    if i > average: #---also float
        good.append(i)
        goodmonths.append(months[mon])
    elif i < average:
        bad.append(i)
        badmonths.append(months[mon])

mon是列表索引;i是来自net的值。您应该将这些更改为描述性变量名。你知道吗

问题是months[i],因为索引不能是float类型(例如,4.5项是什么?)所以你必须把它转换成一个整数。最简单的方法应该是用months[int(i)]替换months[i]

相关问题 更多 >

    热门问题