我是python的新手。我有一个列表如下。
1 [2,3,4] 10
2 [3,4] 20
3 [4] 30
然后,我想让元素上面的第二列成为下面的第一列,并计算下面第二列的最后一列除以第二列中的总元素,如下所示。
2 10/3
3 10/3
4 10/3
3 20/2
4 20/2
4 30/1
答案 0 :(得分:1)
首先,您需要将数据重新格式化为更有用的格式。我将包括一些额外的步骤,以便它们如何一起工作更有意义。
input_list = [] ### initializes the list you'll be using (otherwise you have no list to add to)
row_1 = [1,[2,3,4], 10]
row_2 = [2,[3,4], 20]
row_3 = [3,[4], 30]
input_list.append(row_1)
input_list.append(row_2)
input_list.append(row_3)
这将导致您的所有数据分配到input_list
,就像这样,
input_list = [[1,[2,3,4], 10], [2,[3,4], 20], [3,[4], 30]]
现在可用于迭代以获得您正在寻找的答案。您当然可以跳过将每一行定义为自己的变量,然后通过在一个步骤中定义input_list
所有数据来将每个行添加到input_list
。但为了便于阅读和理解正在发生的一切,我使用了上面的分步方法。现在通过创建一个以input_list
作为参数的函数,您可以创建两个简单的循环(一个在另一个中)来完成您的需要,
def operation(input):
output = [] ### initializes your final output list variable
for row in input:
for number in row[1]:
column1 = row[0]
column2 = number
column3 = row[2]/len(row[1])
output.append([column1, column2, column3])
return output
然后要实际创建所需的输出,请使用operation
作为参数调用input_list
函数,
output_list = operation(input_list)
其中output_list
是一个新定义的变量,将分配给operation
函数返回的任何内容(输出)。
然后以可读格式查看列表,也可以运行它,
for row in output_list:
print row
这应该可以满足您的需求!