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语句都将被忽略。