def get_product_ids(user_id, user_products):
products = []
# In one line using list comprehension
products.extend([sub_list[1] for sub_list in user_products if sub_list[0] == user_id])
# if above code is too complicated, used the below three lines instead
# for sub_list in user_products:
# if sub_list[0] == user_id:
# products.append(sub_list[1])
return products
user_products = [[0,1],[0,20],[0,30],[1,11],[1,23],[1,45]]
get_product_ids(0, user_products)
Дайте выше попробовать. Я предоставил два способа сделать то же самое. Используйте то, что вы предпочитаете.
Сложность где-то рядом с O (n), которая должна быть достаточно хорошей и быстрой.
Если вы собираетесь использовать эту функцию много раз, я бы посоветовалнаписание другой функции, которая возвращала бы словарь с user_id в качестве ключей и product_ids в качестве значений. Это сделало бы всю работу по-настоящему эффективной, чем перебор полного списка каждый раз.
С вашим примером ввода этот словарь будет выглядеть примерно так:
{ 0: [1,20,30], 1: [11,23,45] }