suma - valores pares en python
La forma más corta de cortar líneas pares/impares de una matriz de python? (3)
> map(lambda index: arr[index],filter(lambda x: x%n == 0,range(len(arr))))
donde arr
es una lista, y se requieren n
slices.
O bien, una pregunta más general sería cómo dividir una matriz para obtener cada línea n-ésima, por lo que para parejas / impares querría omitir una línea, pero en el caso general querría obtener cada n- las líneas, omitiendo n-1 líneas.
Suponiendo que está hablando de una lista , especifique el paso en el sector (e inicie el índice). La sintaxis es list[start:end:step]
.
Probablemente conozcas el acceso normal a la lista para obtener un artículo, por ejemplo, l[2]
para obtener el tercer artículo. Al dar dos números y dos puntos entre ellos, puede especificar un rango que desea obtener de la lista. El valor de retorno es otra lista. Por ejemplo, l[2:5]
le da el tercer al sexto elemento. También puede pasar un tercer número opcional, que especifica el tamaño del paso. El tamaño de paso predeterminado es uno, lo que simplemente significa tomar cada elemento (entre el índice de inicio y final).
Ejemplo:
>>> l = range(10)
>>> l[::2] # even - start at the beginning at take every second item
[0, 2, 4, 6, 8]
>>> l[1::2] # odd - start at second item and take every second item
[1, 3, 5, 7, 9]
Ver listas en el tutorial de Python .
Si quiere obtener cada n
-ésimo elemento de una lista (es decir, excluyendo el primer elemento), tendría que dividir como l[(n-1)::n]
.
Ejemplo:
>>> l = range(20)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Ahora, obtener cada tercer elemento sería:
>>> l[2::3]
[2, 5, 8, 11, 14, 17]
Si desea incluir el primer elemento, simplemente haga l[::n]
.
Esto es más para mí como un ejemplo completo;)
>>> import itertools
>>> ret = [[1,2], [3,4,5,6], [7], [8,9]]
>>> itertools.izip_longest(*ret)
>>> [x for x in itertools.chain.from_iterable(tmp) if x is not None]
[1, 3, 7, 8, 2, 4, 9, 5, 6]