Seite 1 von 1

Kurzschreibweise für List in List noch nicht verstanden

Verfasst: Dienstag 18. Februar 2020, 16:35
von DMD-OS
Hallihallo
ich würde gern den code (oben) in kurzschreibweise (oder wie man das nennt) erhalten.

Code: Alles auswählen

user_info = [['Mustertestdatei_co_17.02.2020.xlsx', 'Tabelle1', 3, 7, 5],
             ['Mustertestdatei_co_17.02.2020.xlsx', 'Laie', 7, 3, 5],
             ['Mustertestdatei_co_17.02.2020.xlsx', 'Profi', 9, 4, 5]
             ]

search_lst = [['Mustertestdatei_co_17.02.2020.xlsx', 'Tabelle1'], ['Mustertestdatei_co_17.02.2020.xlsx', 'Profi']]

for user in user_info:
    for searcher in search_lst:
        if searcher[0] in user and searcher[1] in user:
            print(user)
print('---')
print(user for user in user_info if search[0] for searcher in search_lst and search[1] for search in search_lst)
leider versteh ich das problem nicht ganz.
ich benutze pycharm. darin leuchtet search[0] auf mit dem hinweis:
Name 'search' can be not defined
das würde ich gern verstehen :)

Re: Kurzschreibweise für List in List noch nicht verstanden

Verfasst: Dienstag 18. Februar 2020, 16:50
von Sirius3
Du kannst die for-Schleifen nicht in Kurzschreibweise (Nomen schreibt man gross) also als Listcomprehension schreiben, weil Du gar keine Liste erzeugst.
Würdest Du eine Liste users erzeugen, mußt Du die for-Schleifen und if-Abfrage in der selben Reihenfolge schreiben, wie oben:

Code: Alles auswählen

users = [user for user in user_info for searcher in search_lst if searcher[0] in user and searcher[1] in user]
Die if-Abfrage ist übrigens falsch, genauso falsch, wie die Listen innerhalb der Listen, die sollten Tuple sein.

Code: Alles auswählen

user_infos = [
    ('Mustertestdatei_co_17.02.2020.xlsx', 'Tabelle1', 3, 7, 5),
    ('Mustertestdatei_co_17.02.2020.xlsx', 'Laie', 7, 3, 5),
    ('Mustertestdatei_co_17.02.2020.xlsx', 'Profi', 9, 4, 5),
]

search_patterns = [
    ('Mustertestdatei_co_17.02.2020.xlsx', 'Tabelle1'),
    ('Mustertestdatei_co_17.02.2020.xlsx', 'Profi'),
]

for user_info in user_infos:
    for filename, sheetname in search_patterns:
        if filename == user_info[0] and sheetname == user_info[1]:
            print(user)
Dieses Umwandeln in Listcomprehension-Schreibweise sei dem Leser überlassen.

Re: Kurzschreibweise für List in List noch nicht verstanden

Verfasst: Mittwoch 19. Februar 2020, 09:05
von DMD-OS
Danke.