列表追加方法在函数中无法使用

问题描述 投票:0回答:2

我有一个txt文件中的数据表,我把它带入Python中。

a1_file=open(file_path,'r')

然后我进入第二行跳过页眉。

a1_file.readline()
line_string=a1_file.readline()

作为一个逗号分隔的函数,我想得到一个列表,其中前5个逗号的位置被存储。为了达到这个目的,我尝试使用这个函数。

def commas_in_line(table_row):
    commas=[]
    while len(commas) <5:
        if len(commas)==0:
            i=0
        else:
            i=commas[-1]+1
        k=table_row.find(',',i)
        commas=commas.append(k)
    return commas

我用以下方法调用这个函数:

commas_in_line(line_string)

代码报告了这个错误:

Traceback (most recent call last):
  File "<pyshell#52>", line 1, in <module>
    commas_in_line(line_string)
  File "C:/1WritingPrograms.py", line 11, in commas_in_line
    while len(commas) <5:
TypeError: object of type 'NoneType' has no len()

>>> line_string
'30/04/2020,30,4,2020,122,0,Afghanistan,AF,AFG,37172386,Asia\n'

我试着在函数中代入。

commas=commas.append(k)

用:

commas=commas+[k]

就可以了,但是我怎么能使用 append 方法?为什么会失败?

python list append
2个回答
1
投票

本质上 .append() 并不返回新的数组。.append() 有点像一个 inplace 函数,其中的值被追加到数组中。所以你不需要返回任何东西。当你说 commas=commas.append(k),返回一个新的实体,它是NoneType。请保持它为 commas.append(k)


0
投票

你可以用以下方法向一个 python 列表中添加值。

commas.append(k)

你可以使用 = 操作符来定义一个列表,而不是改变一个列表。例如,对于

commas = ['a', 'b', 'c']
commas.append('d')

commas 现在将成为 (a, b, c, d).

这里有更多关于python列表的内容 https:/www.w3schools.compythonpython_lists.asp

© www.soinside.com 2019 - 2024. All rights reserved.