Se le carte sono annidati in maniera ingombrante:
>>> Cards = [[["QS","5H","AS"],["2H","8H"],["7C"]],[["9H","5C"],["JH"]],["7D"]]
>>> def getCards(cardList,myCards=[]): #change this to myCards, and pass in a list to mutate this is just for demo
if isinstance(cardList,list):
for subList in cardList:
getCards(subList)
else:
myCards.append(cardList)
return myCards
>>> getCards(Cards)
['QS', '5H', 'AS', '2H', '8H', '7C', '9H', '5C', 'JH', '7D']
Sarà recursivly passare attraverso la lista e trovare tutti gli elementi. Questi sono alcuni timeings ho eseguito confrontando le prestazioni del flattern
metodologia prescelta per la mia:
>>> print(timeit.timeit(r'getCards([[["QS","5H","AS"],["2H","8H"],["7C"]],[["9H","5C"],["JH"]],["7D"]],[])',setup="from clas import getCards"))
5.24880099297
>>> timeit.timeit(r'flatten([[["QS","5H","AS"],["2H","8H"],["7C"]],[["9H","5C"],["JH"]],["7D"]])',setup="from compiler.ast import flatten")
7.010887145996094
Ho modificato il tuo codice per aggiungere un '' 'come mancante. Perché hai annullato quella modifica? –
Avrai bisogno di qualche ricorsività per ottenere quello che vuoi in modo pulito – Maresh
Hai tutte le carte a la stessa profondità? Quindi devi solo andare lì. –