如何为文档的长度运行函数

时间:2017-08-06 16:28:15

标签: python function

以下代码导致2 \ n 4 \ n 6 \ n 8 \ n。

with open('test.csv','r')as document:
    for line in document:
        line=line.split(',')
        for item in line:
            item=item.replace('\n','')
            item=int(item)*2
            print(item)

但是,当我尝试将其用作如下函数时,结果只有2。

def results():
    with open('test.csv','r')as document:
        for line in document:
            line=line.split(',')
            for item in line:
                item=item.replace('\n','')
                item=int(item)*2
                return item

print(results())

据推测,这只是运行一次功能。如何在文档长度上运行函数?感谢。

2 个答案:

答案 0 :(得分:3)

您需要创建一个列表来附加您的项目。您的函数只在每个循环中运行一次,因为您在第一次迭代时title /?

return

或者您可以保持相同的逻辑并使用{​​{1}}来创建生成器:

def results():
    items = list()
    with open('test.csv','r')as document:
        for line in document:
            line=line.split(',')
            for item in line:
                item=item.replace('\n','')
                item=int(item)*2
                items.append(item)
    return items

In [6]: results()
Out[6]: [2, 4, 6, 8]

请注意,后一个示例会保持文件处于打开状态,直到清除生成器。

答案 1 :(得分:1)

您没有正确迭代文件的行。以下代码将读取cvs文件并返回每个值平方的数组数组。例如,如果输入文件如下所示:

1,2,3
4,5,6
7,8,9
输出将是:

[[1,4,9],[16,25,36],[49,64,81]]

参见示例:

def results():
    arrayOfResults = []
    with open('test.csv','r')as document:
        lines = document.read().split("\n")
        for line in lines:
            items=line.split(',')
            resultsForThisLine = []
            for item in items:
                resultsForThisLine.append(int(item)**2)
            arrayOfResults.append(resultsForThisLine)
print(arrayOfResults)

请注意,我们在对行进行迭代之前读取并拆分输入文件,并且我们为每一行创建一个结果数组,以及为每个表追加数组的整个数组。

不确定这是不是你想要做的,但你发布的内容看起来很奇怪......