我试图创建一个函数,该函数接受一个列表,并用python给出一个经过编辑的列表

我试图创建一个函数,该函数接受一个列表,并用python给出一个经过编辑的列表,python,Python,我试图创建一个函数,在本例中称为delta,它将接受一个in_列表,并返回和out_列表。以下是外名单的要求: len(外部列表)==len(内部列表)-1 out\u list(i)=in\u list(i+1)-in\u list(i) 我希望使用下面代码中“时间”和“位置”列表上的功能: positionfile = open.("positionmeasurements.txt", "r", encoding="utf-8-sig") filetext = positionfile.re

我试图创建一个函数,在本例中称为delta,它将接受一个in_列表,并返回和out_列表。以下是外名单的要求:

  • len(外部列表)==len(内部列表)-1
  • out\u list(i)=in\u list(i+1)-in\u list(i)
  • 我希望使用下面代码中“时间”和“位置”列表上的功能:

    positionfile = open.("positionmeasurements.txt", "r", encoding="utf-8-sig")
    filetext = positionfile.read().splitlines()
    
    times = []
    positions = []
    
    for i in filetext:
        time, position = i.split(";")
        times.append(time)
        positions.append(position)
    
    这是我到目前为止为函数得到的代码:

    def delta(in_list):
        for i in in_list:
            out_list = in_list[i+1] - in_list[i]
        return out_list
    
    以下数字是时间(分号左侧)和位置:

    0.05;0.9893835

    0.1;0.9921275

    0.15;0.989212

    0.2;0.98784

    0.25;0.9876685

    0.3;0.988526

    0.35;0.991613

    0.4;0.9921275

    0.45;0.9921275

    0.5;0.9886975

    0.55;0.985096

    0.6;0.983724

    0.65;0.9578275

    0.7;0.9163245

    0.75;0.8590435

    0.8;0.7890715

    0.85;0.714812

    0.9;0.642096

    0.95;0.559776

    一,;0.4776275

    1.05;0.398566

    1.1;0.315903

    1.15;0.2320395

    1.2;0.1799035


    1.25;0.181104

    您可以尝试列表理解。由于列表中的元素是字符串,因此必须将它们转换为浮点:

    def delta(in_list):
        return [float(in_list[i+1]) - float(in_list[i]) for i in range(len(in_list) - 1)]
    

    我的一部分人认为递归地做这件事会更优雅,但是如果有一个很长的列表,你做这件事的方式可能会更好。不管怎么说,您就快到了,您刚刚混淆了Python的for循环语法<代码>为列表中的项目提供项目,
    为范围内的i(len(list))
    为列表提供索引,这是您在此处想要的

    def delta(in_list):
        out_list = []
        for i in range(len(in_list)-1):
            out_list.append(in_list[i+1] - in_list[i])
        return out_list
    

    只是一个列表

    >>> in_list = [1, 1, 2, 3, 5, 8, 13, 21]
    >>> [b - a for a, b in zip(in_list, in_list[1:])]
    [0, 1, 1, 2, 3, 5, 8]
    

    那么这个代码有什么问题呢?我们应该猜猜吗?我猜
    索引器:列表索引超出范围
    除非您在解析该数据时遇到问题,否则最好将其忽略,并以数字列表的形式提供输入。在函数定义中,I in range(len(in_list))应该是
    问题是,当我尝试在列表“times”和“positions”上使用函数时,我得到了错误代码`TypeError:只能将str(而不是“int”)连接到str`你能给我们看一下你的时间和位置列表以及时间[1]和位置[1]的类型吗?这里有同样的问题。你的索引将出界。谁整洁!把斐波那契数列倒过来+1.