Quando si utilizza la funzione list
con qualsiasi iterabile, verrà creato un nuovo oggetto elenco con tutti gli elementi dall'iterazione come singoli elementi nell'elenco.
Nel tuo caso, le stringhe sono iterables Python validi, quindi
>>> list('alpha')
['a', 'l', 'p', 'h', 'a']
>>> list('alphanumeric')
['a', 'l', 'p', 'h', 'a', 'n', 'u', 'm', 'e', 'r', 'i', 'c']
Quindi, si sta effettivamente verificando se una lista è un elenco secondario di un altro elenco.
In Python solo Stringhe hanno l'operatore in
per verificare se una stringa fa parte di un'altra stringa. Per tutte le altre raccolte, puoi utilizzare solo singoli membri. Citando il test documentation,
Gli operatori in
e not in
per l'adesione di raccolta. x in s
restituisce true se x
è un membro della raccolta s
e false altrimenti. x not in s
restituisce la negazione di x in s
. Il test di appartenenza alla collezione è stato tradizionalmente legato a sequenze; un oggetto è un membro di una raccolta se la collezione è una sequenza e contiene un elemento uguale a quell'oggetto. Tuttavia, ha senso che molti altri tipi di oggetti supportino i test di appartenenza senza essere una sequenza. In particolare, i dizionari (per le chiavi) e gli insiemi supportano il test di appartenenza.
Per i tipi di liste e tuple, x in y
è vero se e solo se esiste un indice i
tale che x == y[i]
è vero.
Per i tipi Unicode e stringa, x in y
è vero se e solo se x
è una stringa di y
. Un test equivalente è y.find(x) != -1
. Nota: x
e non devono essere dello stesso tipo; di conseguenza, u'ab'
in 'abc'
restituirà True
. Le stringhe vuote vengono sempre considerate come una sottostringa di qualsiasi altra stringa, pertanto ""
in True
restituirà True
.
Se si stampa 'lista ('alfanumerica')', si noterà che non ha un sottolista contenente ''alpha'' in esso. – tdelaney
@tdelaney Ma contiene il sottolista '['a', 'l', 'p', 'h', 'a']'. Se 'in' ha verificato la presenza di sottolisti e non solo l'appartenenza, allora' lista ('alpha') nella lista ('alfanumerico') 'restituirà' True'. –