que tienen una lista como la siguiente¿Cómo se determina si una lista bidimensional contiene un valor?
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
qué es lo que veo si la lista contiene 'valor2'?
que tienen una lista como la siguiente¿Cómo se determina si una lista bidimensional contiene un valor?
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
qué es lo que veo si la lista contiene 'valor2'?
Uso any()
:
any('value2' in sublist for sublist in mylist)
Gracias, estoy curioso si hay una manera de obtener el elemento que se emparejó? – Tommyka
Para obtener el artículo que contiene el valor que está buscando, debe usar un ciclo 'for' normal y devolver o romper cuando' 'value2'' exista en la lista. Si quiere encontrar todos los elementos que coincidan, puede usar '[sublista para la sublista en mylist si 'valor2' en sublista] '. –
Simplemente puede comprobar todas las sublistas con any
:
any('value2' in subl for subl in mylist)
similar a any()
, una solución que también es compatible con los cortocircuitos:
>>> from itertools import chain
>>> mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
>>> 'value2' in chain(*mylist)
True
prueba de que cortocircuita como any()
:
>>> it=chain(*mylist)
>>> 'value2' in it
True
>>> list(it) #part of iterable still not traversed
['value3', 'secval1', 'secval2', 'secval3']
'any' ya hace cortocircuitos. Pruébelo creando una clase que defina '__nonzero__', coloque una instrucción' print' allí, y úselo como el segundo valor en el argumento de 'any' (cuando el primero es' True'). La sentencia 'print' no se ejecutará. –
@poorsod Lo sé, por eso dije '" similar a any() "'. :) –
Oh, entendí mal - pensó que estaba sugiriendo un reemplazo para 'cualquiera' que usa cortocircuitos. –
'value2' in (item for sublist in mylist for item in sublist)
Si desea ver el índice del valor dentro de la lista de 2 dimensiones, que utiliza esta respuesta: https://stackoverflow.com/a/6518412/1799272 – Oli4