Я составляю список:
nest_list = [['John like to play football'],['He likes Liverpool'],
['His favourite player is Salah'],['He would like to play as striker'],
[],['James like to play F1'],['He likes Ferrari'],
['His favourite driver is Raikkonnen'],[],
['Stefani like to play basketball'],['She likes Chicago Bulls'],
['His favourite player is Micheal Jordan']]
Я хочу найти пустой список и перебрать его, чтобы получить информацию о каждом человеке и сохранить его в виде фрейма данных.Например:
Row 1: John Football Liverpool Salah Striker
Row 2: James F1 Ferrari Raikkonen Driver
Column: John James etc
Для этого я попробовал функцию, которая сохраняет в список True
, если длина списка равна 0, и False
в противном случае.
Затем я использую itertools.com, чтобынапечатать элементы, селекторы которых имеют значение True.
zip_nest_list = list(zip(range(len(nest_list)),nest_list))
import itertools
selectors = []
def is_empty(i):
'''Create selectors list with True when empty list and false when not empty'''
if len(zip_nest_list[i][1]) == 0:
selectors.append(True)
selectors.append(False)
for x in range(len(zip_nest_list)):
is_empty(x)
result = itertools.compress(zip_nest_list,selectors)
#printing empty lists with number
for item in result:
print(item)
Проблема состоит в том, что у селекторов больше элементов, чем я ожидал (14 вместо 12).Между True
и следующим True
у меня 4 раза False
, но должно быть 3 раза и еще один False
после второго True
.
Почему это и как исправить?Есть ли более быстрый / лучший способ решить всю проблему?