Форум сайта python.su
0
Здравствуйте! Проблема в следующем :
Имеется список A с определенными строками -
A [a, b, c, d, e]
B [[1,2,3,b,4,5] , [1,2,3,f,4,5] , [1,2,3,c,4,5] , [1,2,3,e,4,5]]
sort_sb = ['яблоки', 'мандарины', 'бананы'] # названия элементов изменил для понятности :) def sb(): d = 0 s = 0 while d <= int(len(data)): if sort_sb[s] == data[d][3]: del data[d] elif sort_sb[s] != data[d][3]: s += 1 elif sort_sb[s] != data[d][3] and s == len(sort_sb): d += 1 s = 0
Офлайн
294
AntiVeganда черт его разберет, у вас “s” вообще никак не контролируеться(да-да, ваш второй elif никогда не сработает), он просто увеличивается каждый раз кода
list index out of range и я не понимаю почему…
sort_sb[s] != data[d][3]
A = ['a', 'b', 'c', 'd', 'e'] B =[[1,2,3,'b',4,5] , [1,2,3,'f',4,5] , [1,2,3,'c',4,5] , [1,2,3,'e',4,5], [1,2,3,4,5,6]] def sb(exl_lst, in_lst): res_lst = [] for lst in in_lst: if lst[3] not in exl_lst: res_lst.append(lst) return res_lst print(sb(A, B)) >>> [[1, 2, 3, 'f', 4, 5], [1, 2, 3, 4, 5, 6]] >>>
[code python][/code]
Отредактировано PEHDOM (Янв. 20, 2019 19:32:02)
Офлайн
0
Питон это мой первый язык. Ваш способ похоже мне не подойдет, наверное вы меня не так поняли. Постараюсь объяснить более подробно. Представьте, что список B это таблица, и каждый список внутри B - это строка таблицы в которой каждый индекс - это данные из строки. К примеру индекс 0 - это дата заказа, индекс 1 - это дата доставки заказа, индекс 2 - имя менеджера, который принял заказ, индекс 3 - наименование товара ( например ябоки, мандарины, бананы и тд) и так далее!! В итоге мы получаем список B примерно такого содержания -
[['17.01.19' , '19.01.19' , 'Василий' , 'яблоки' , '20кг' , 'безнал'] , ['15.01.19' , '16.01.19' , 'Анастасия' , 'груши' , '3кг' , 'нал'] , ['11.01.19' , '15.01.19' , 'Сергей' , 'бананы' , '8кг' , 'безнал'] , ['19.01.19' , '20.01.19' , 'Петр' , 'кокосы' , '40кг' , 'нал']]
['яблоки' , 'бананы' , 'киви' , 'кокосы']
[['15.01.19' , '16.01.19' , 'Анастасия' , 'груши' , '3кг' , 'нал']]
Отредактировано AntiVegan (Янв. 20, 2019 20:26:39)
Офлайн
294
AntiVeganхммм… А по моему все работает именно так как вы описали.
Ваш способ похоже мне не подойдет, наверное вы меня не так поняли.
B = [['17.01.19' , '19.01.19' , 'Василий' , 'яблоки' , '20кг' , 'безнал'] , ['15.01.19' , '16.01.19' , 'Анастасия' , 'груши' , '3кг' , 'нал'] , ['11.01.19' , '15.01.19' , 'Сергей' , 'бананы' , '8кг' , 'безнал'] , ['19.01.19' , '20.01.19' , 'Петр' , 'кокосы' , '40кг' , 'нал']] A = ['яблоки' , 'бананы' , 'киви' , 'кокосы'] def sb(exl_lst, in_lst): res_lst = [] for lst in in_lst: if lst[3] not in exl_lst: res_lst.append(lst) return res_lst B =sb(A, B) print(B) >>> [['15.01.19', '16.01.19', 'Анастасия', 'груши', '3кг', 'нал']] >>>
[code python][/code]
Отредактировано PEHDOM (Янв. 20, 2019 20:36:18)
Офлайн
0
хммм… А по моему все работает именно так как вы описали.
Отредактировано AntiVegan (Янв. 20, 2019 20:39:55)
Офлайн
857
>>> a = ['a', 'b', 'c', 'd', 'e'] >>> b = [[1, 2, 3, 'b', 4, 5], ... [1, 2, 3, 'f', 4, 5], ... [1, 2, 3, 'c', 4, 5], ... [1, 2, 3, 'e', 4, 5], ... [1, 2, 3, 4, 5, 6]] >>> out = [i for i in b if i[3] not in a] >>> out [[1, 2, 3, 'f', 4, 5], [1, 2, 3, 4, 5, 6]] >>>
Офлайн
0
Спасибо py.user.next ! Ваш способ выручил с другой проблемой!!!!
Офлайн