如何使用 for 循环创建嵌套列表列表
How to create a list of nested lists using for-loop
我创建了一个包含嵌套列表的数据
[[[0.0, 0.0, 1.0, 1.0, 1.0],
[0.19470745, -0.3966015, 0.65908825, 0.5956116, 0.39256063],
[0.039188415, 0.17440148, 0.7077338, 0.9051374, 0.6405964],
[-0.30367687, -0.32211977, 0.75126046, 1.0, 0.75126046],
[0.0, 0.0, 1.0, 1.0, 1.0],
[-0.15551904, 0.57100296, 1.0738074, 1.5196773, 1.6318406],
[-0.49838433, 0.07448171, 1.139848, 1.6789465, 1.9137439]]]
我通过读取 tsv 文件创建了以上数据。对其执行一些操作,然后尝试创建上述列表
if __name__ == '__main__':
in_data = []
final_list=[]
final_list_2=[]
with open(infile, "r+b") as tsv_in_file:
reader = csv.DictReader(codecs.iterdecode(tsv_in_file,'utf-8'), delimiter='\t', fieldnames = FIELDNAMES)
for item in reader:
for field in ['boxes']:
item[field] = np.frombuffer(base64.b64decode(item[field]), dtype=np.float32).reshape((int(item['num_boxes']),-1))
for i in range(len(item[field])):
for j in range(len(item[field])):
in_data = [0]*5
in_data[0]=(((item['boxes'][j][0])-(item['boxes'][i][0]))/(item['boxes'][0][2]))
in_data[1] = (((item['boxes'][j][1])-(item['boxes'][i][1]))/(item['boxes'][0][3]))
in_data[2] = ((item['boxes'][j][2])/(item['boxes'][i][2]))
in_data[3] = ((item['boxes'][j][3])/(item['boxes'][i][3]))
in_data[4]=(((item['boxes'][j][2])*(item['boxes'][j][3]))/((item['boxes'][i][2])*(item['boxes'][i][3])))
final_list.append(in_data.copy())
final_list_2.append(final_list)
break
print (final_list_2)
我正在尝试制作一组 3 个列表,每个列表和一个包含所有列表组的完整列表
代码行final_list.append(in_data.copy())
包含一组列表(包含3个列表)
我正在尝试制作 前三个列表 的列表,在完成 for j in range(len(item[field])):
后由 final_list.append(in_data.copy())
给出,我想将其保存在 final_list_2.append(final_list)
为此我使用了一个循环
for i in range(len(item[field])):
但是我没有这样做。您可以在上面的数据中看到 [[[ 出现在开始和结束处。该组未创建。谁能帮我解决这个问题
逐行处理文件时,您可以将每个项目添加到 current_group
列表中。当 current_group
中有 3
个元素时,将其附加到主列表并创建一个新的空 current_group
列表。
main_list = []
current_group = []
for item in reader:
current_item = []
# Do whatever processing you need to fill up current_item
# This will be a list containing N elements
# ...
current_group.append(current_item) # Add current item to current group
if len(current_group) == 3:
main_list.append(current_group) # Add current group to main list
current_group = [] # Create a new group
# Check if current_group is empty
# If it contains stuff, your last group didn't have three items so it didn't get appended to main_list
if current_group:
main_list.append(current_group)
我创建了一个包含嵌套列表的数据
[[[0.0, 0.0, 1.0, 1.0, 1.0],
[0.19470745, -0.3966015, 0.65908825, 0.5956116, 0.39256063],
[0.039188415, 0.17440148, 0.7077338, 0.9051374, 0.6405964],
[-0.30367687, -0.32211977, 0.75126046, 1.0, 0.75126046],
[0.0, 0.0, 1.0, 1.0, 1.0],
[-0.15551904, 0.57100296, 1.0738074, 1.5196773, 1.6318406],
[-0.49838433, 0.07448171, 1.139848, 1.6789465, 1.9137439]]]
我通过读取 tsv 文件创建了以上数据。对其执行一些操作,然后尝试创建上述列表
if __name__ == '__main__':
in_data = []
final_list=[]
final_list_2=[]
with open(infile, "r+b") as tsv_in_file:
reader = csv.DictReader(codecs.iterdecode(tsv_in_file,'utf-8'), delimiter='\t', fieldnames = FIELDNAMES)
for item in reader:
for field in ['boxes']:
item[field] = np.frombuffer(base64.b64decode(item[field]), dtype=np.float32).reshape((int(item['num_boxes']),-1))
for i in range(len(item[field])):
for j in range(len(item[field])):
in_data = [0]*5
in_data[0]=(((item['boxes'][j][0])-(item['boxes'][i][0]))/(item['boxes'][0][2]))
in_data[1] = (((item['boxes'][j][1])-(item['boxes'][i][1]))/(item['boxes'][0][3]))
in_data[2] = ((item['boxes'][j][2])/(item['boxes'][i][2]))
in_data[3] = ((item['boxes'][j][3])/(item['boxes'][i][3]))
in_data[4]=(((item['boxes'][j][2])*(item['boxes'][j][3]))/((item['boxes'][i][2])*(item['boxes'][i][3])))
final_list.append(in_data.copy())
final_list_2.append(final_list)
break
print (final_list_2)
我正在尝试制作一组 3 个列表,每个列表和一个包含所有列表组的完整列表
代码行final_list.append(in_data.copy())
包含一组列表(包含3个列表)
我正在尝试制作 前三个列表 的列表,在完成 for j in range(len(item[field])):
后由 final_list.append(in_data.copy())
给出,我想将其保存在 final_list_2.append(final_list)
为此我使用了一个循环
for i in range(len(item[field])):
但是我没有这样做。您可以在上面的数据中看到 [[[ 出现在开始和结束处。该组未创建。谁能帮我解决这个问题
逐行处理文件时,您可以将每个项目添加到 current_group
列表中。当 current_group
中有 3
个元素时,将其附加到主列表并创建一个新的空 current_group
列表。
main_list = []
current_group = []
for item in reader:
current_item = []
# Do whatever processing you need to fill up current_item
# This will be a list containing N elements
# ...
current_group.append(current_item) # Add current item to current group
if len(current_group) == 3:
main_list.append(current_group) # Add current group to main list
current_group = [] # Create a new group
# Check if current_group is empty
# If it contains stuff, your last group didn't have three items so it didn't get appended to main_list
if current_group:
main_list.append(current_group)