简体   繁体   English

使用其他2个嵌套列表中的项目填充嵌套列表| 蟒蛇

[英]populating a nested list with items from 2 other nested lists | python

EDITED EDITED

I have 2 nested lists, example: 我有2个嵌套列表,例如:

cluster_list_all_thermostat_starts = [[0, 1000, 1200, 1500, 7000], [2,300,400],[4,500,765,100,2500,3000]]

list_all_thermostat_set_points = [[20, 20, 20.5, 19.5, 19], [20,23.5,19.5],[20,20,19.5,20,25,21.5]]

They have exact shapes, meaning: lists in given index in both master lists have the same number of elements. 它们具有精确的形状,这意味着:两个主列表中给定索引中的列表具有相同数量的元素。

I want to create a nested "master list" in which all lists will have the same number of elements and the elements will be filled from the list_of_start_times and list_of_temperatures: 我想创建一个嵌套的“主列表”,其中所有列表将具有相同数量的元素,并且这些元素将从list_of_start_times和list_of_temperatures中填充:

master_list =[[temperature,temperature,temperature,...,temperature], [temperature,temperature,temperature,...,temperature], [temperature,temperature,temperature,...,temperature]]

master_list should have 3 lists, each one having the same number of elements. master_list应该具有3个列表,每个列表具有相同数量的元素。

I do it this way now: 我现在是这样的:

master_list_of_quartiles = []
for domek in range(len(list_of_start_times)):

master_list = [0]*24*365*4
temperatures = list_all_thermostat_set_points[domek]

house_list_start_charge = cluster_list_all_thermostat_starts[domek]
house_list_end_charge = cluster_list_all_thermostat_starts[domek] #the same list is used because the thermostat only has start times
#print(house_list_start_charge)


for kwadrans in range(len(house_list_start_charge)):
    print(kwadrans)
    start_charge = int(house_list_start_charge[kwadrans])
    print(start_charge)
    try:
        end_charge = int(house_list_end_charge[kwadrans+1]) - 1
    except IndexError:
        end_charge = 4*24*365   
    print(end_charge)
    this_temp = temperatures[kwadrans]
    print(this_temp)

    for j in range(start_charge , end_charge):
        master_list[j]=this_temp
    master_list_of_quartiles.append(master_list)

All: print(start_charge), print(this_temp), print(end_charge) show good values, but filling out the master_list doesn't work as it fills it with the last iterated item. 全部: print(start_charge), print(this_temp), print(end_charge)显示出良好的值,但是填写master_list无效,因为它将最后一个迭代项填充到该列表中。

The goal is to transform master_list_of_quartiles later into a dataframe of 3 columns and 24*365*4 indexes. 目标是稍后将master_list_of_quartiles转换为3列和24 * 365 * 4索引的数据框。

How to fix it while keeping proper indexing? 如何在保持正确索引的同时进行修复?

I managed to solve the problem! 我设法解决了这个问题!

for domek in range(len(house_has_thermostat)):

master_list = []
temperatures = list_all_thermostat_set_points[domek]

house_list_start_charge = cluster_list_all_thermostat_starts[domek]
house_list_end_charge = cluster_list_all_thermostat_starts[domek] #the same list is used because the thermostat only has start times


for kwadrans in range(len(house_list_start_charge)):
    print(kwadrans)
    start_charge = int(house_list_start_charge[kwadrans])
    print(start_charge)
    try:
        end_charge = int(house_list_end_charge[kwadrans+1]) - 1
    except IndexError:
        end_charge = 4*24*365   
    print(end_charge)
    this_temp = temperatures[kwadrans]
    print(this_temp)


    for j in range(start_charge , end_charge):
        master_list.extend([this_temp])
while len(master_list)<4*24*365:
    master_list.extend([this_temp])
master_list_of_quartiles.append(master_list)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM