Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从另一个列表创建新列表,但简化_Python_List_File - Fatal编程技术网

Python 从另一个列表创建新列表,但简化

Python 从另一个列表创建新列表,但简化,python,list,file,Python,List,File,我试图创建一个函数,该函数接收两位信息,并根据文件中已存在的信息返回两个浮点列表: 让我们按如下方式定义函数get\u cakes\u size\u color(),该函数应接收两个字符串作为参数:文件名、Cake size pattern。函数应该返回一个列表,其中第一个元素是蛋糕大小列表,第二个元素是重量颜色列表 这是我尝试过的一段代码: def get_dimer_distance_energy(file_name, weight_size): one_cake_size = Tr

我试图创建一个函数,该函数接收两位信息,并根据文件中已存在的信息返回两个浮点列表:

让我们按如下方式定义函数
get\u cakes\u size\u color()
,该函数应接收两个字符串作为参数:文件名、Cake size pattern。函数应该返回一个列表,其中第一个元素是蛋糕大小列表,第二个元素是重量颜色列表

这是我尝试过的一段代码:

def get_dimer_distance_energy(file_name, weight_size):
    one_cake_size = True
    cake_size = []
    cake_colour = []
    cake_colours = []

    with open(file_name,'r') as file:
       for line in file:
          if cake_size in line.split() and one_cake_size:
              cake_size_1 = line.split()[1]
              cake_size_A = float(cake_size_1)
              cake_size_2 = line.split()[2]
              cake_size_B = float(cake_size_2)
              cake_size_3 = line.split()[3]
              cake_size_C = float(cake_size_3)

              one_cake_size=False

          elif cake_size in line.split() and not one_cake_size:
              cake_size_4 = line.split()[1]
              cake_size_D = float(cake_size_4)
              cake_size_5 = line.split()[2]
              cake_size_E = float(cake_size_5)
              cake_size_6 = line.split()[3]
              cake_size_F = float(cake_size_6)

          one_cake_size=True
          cake_size = cake_size +[average_size((cake_size_A), (cake_size_B), (cake_size_C), (cake_size_D), (cake_size_E), (cake_size_F))]
          return cake_size

          if "cake colour" in line:
             cake_colour += [line.split()[3]]
             return cake_colour
             for item in cake_colour:
                 cake_colours.append(float(item))
                 return cake_colours
我应该指出,我之前已经为average_size定义了一个函数,它运行得非常完美,如下所示:

def average_size(x1, y1, z1, x2, y2, z2):
    size = ( (x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2 )**0.5
    return size
运行此代码时发现两个问题:

首先,我发现return函数不返回列表,我想知道是否对此进行了修改。我试图在网站上寻找解决方案,但没有找到任何有效的方法


其次,我发现在运行这段代码时,它将返回average_size函数中的任何元素,而它将返回赋值前引用的局部变量。

您返回“cakes”,但我在其他地方没有看到它的定义?很抱歉,我意识到了一个错误。仍然没有解决问题
1\u蛋糕大小
:错误的命名约定。变量不应该以数字开头。修改后的变量仍然没有区别。但是仍然很难说你在做什么。您将返回3个不同的变量:
cake\u size
cake\u color
cake\u colors
。您还认识到,如果将
elif
而不是
if
放入,并且满足了第一个条件,那么无论将
one_-cake\u size
设置为False还是True,整个elif语句都将被忽略。