У меня есть этот код:
def GetSteamAccts(): #Get list of steam logins on this computer.
templist = []
Steamapp_Folders = ["C:\\Program Files (x86)\\Steam\\steamapps\\", "C:\\Program Files\\Steam\\steamapps\\"] #Check both of these directories.
for SF_i in range(len(Steamapp_Folders)):
if os.path.exists(Steamapp_Folders[SF_i]): #If the directory even exists...
Steam_AppDir_Items = os.listdir(Steamapp_Folders[SF_i]) #List items under steam install directory.
for S_AD_i in range(len(Steam_AppDir_Items)): #Make sure the user doesn't have any files in here...
if os.path.isdir(Steamapp_Folders + Steam_AppDir_Items[S_AD_i]): #If our path is a directory...
templist.append(Steam_AppDir_Items[S_AD_i]) #Add it to our list of logins.
#(If some idiot puts extra folders in here,
#it's their own damn fault when it shows on the list.)
return templist #Return a (not so) properly filtered list of steam logins.
Моя проблема в том, что мне это ужасно уродливо. Я составил список из 2 путей (только один из них когда-либо будет существовать), перебрал эти пути, затем мне нужно получить список элементов в этих путях, а затем пройти по ним и отфильтровать не каталоги, чтобы получить псевдо-список Steam-логинов на компьютере пользователя. (По сути, просто получение списка любых существующих каталогов (только каталогов!) По любому из этих двух путей)
Есть ли более короткий способ сделать это (кроме уплотнения циклов в отдельные строки?)?
Я бы предпочел, чтобы мне было предложено англоязычное решение, чтобы я мог составить его самостоятельно; а не код. Это единственный способ, которым я действительно научусь правильно. Даже хороший маленький намек или выдержка, чтобы я мог сам разобраться, был бы хорош.
И: всегда ли нужно обходить списки в циклах:
for x in range(len(somelist)):
или есть что-то более короткое, чем использование диапазона (len (?
)