Python - bucle for

 
Vista:
sin imagen de perfil
Val: 41
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

bucle for

Publicado por Eduardo (25 intervenciones) el 27/11/2016 21:50:57
Hola a todos un saludo, alguien podría por favor facilitarme links de tutoriales, etc donde esté explicado el bucle for más avanzado por ejemplo con estas características:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i in range (0, numChars - k + 1):
    kmer = genome[i:i+k]
    if kmer in myDictionary:
        myDictionary[kmer] += 1
    else:
        myDictionary[kmer] = 1
 
maxValue = 0
answer = ''
# Sort the keys in the dictionary
for w in sorted(myDictionary, key=myDictionary.get, reverse=True):
    if myDictionary[w] >= maxValue:
        maxValue = myDictionary[w]
        answer += w + ' '
        print w, myDictionary[w]

sólo encuentro tutoriales explicando lo básico pero por ejemplo:

1- entiendo kmer=genome[i:i+k] pero quiero saber si es que esa línea significa que asigno la lista genome a la variable kmer.
2- En key=myDictionary.get, reverse=True entiendo que es la clave del diccionario pero necesito un link de un tutorial donde explique qué es el .get junto a myDictionary y reverse=true

Muchas gracias de antemano un saludo a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

bucle for

Publicado por kip (257 intervenciones) el 27/11/2016 22:57:38
Hola, a ver si trato de explicarte un poco:

1
kmer = genome[i:i+k]

En aquella linea tal como dices asigna el valor de gnome a kmer, pero en realidad no todo el contenido, al parecer hace un corte colocando como delimitadores la variable i que va cambiando en la iteracion y tambien la suma de esta mas k, no veo donde defines k pero supongo que es un valor superior a i, en este caso se almacenara en kmer por cada iteracion el 'corte' (por asi decirlo) de la variable genome basandose en los valores dinamicos de i y la suma de i + k, por ejemplo:

1
2
3
4
genome = 'PRUEBA'
print genome[0:2] #IMPRIMIRA 'PR'
print genome[2:4] #IMPRIMIRA 'UE'
print genome[4:6] #IMPRIMIRA 'BA'

1
for w in sorted(myDictionary, key=myDictionary.get, reverse=True):

En la linea de arriba lo que hace es obtener a partir de la funcion sorted() un objeto iterable, en este caso la funcion mencionada retorna una lista ordenada de los datos que se le pase.
sorted() en la linea esta recibiendo la variable lista myDictionary, esa sera la que se ordenara, ademas de aquel parametro especificas otros junto con su 'flag' (definicion del argumento), key sera la variable o funcion en la que se basara para hacer la comparación en cada iteracion, en este caso obtienes el indice en cada iteracion del diccionario cuando haces referencia a la funcion objeto get (esta es aplicable en un diccionario) y este indice vendra ordenado, por ultimo reverse obviamente sirve para definir si el orden de la lista que entregara la funcion estara en reversa.
Al final, sorted traera una lista con los indices de myDictionary ordenados en reversa.

https://docs.python.org/2/howto/sorting.html#key-functions
https://docs.python.org/2/library/functions.html#sorted
https://www.tutorialspoint.com/python/dictionary_get.htm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 41
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

bucle for

Publicado por Eduardo (25 intervenciones) el 28/11/2016 18:28:20
Vale muchas gracias me ha sido de gran utilidad !! el primer for ya lo tengo claro ¿podría decir que el primer bucle for "LLENA" la "LISTA" genome de acuerdo a los cortes que me mencionaste? ¿es correcto afirmar esto?

estoy analizando el segundo for

muchas gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 41
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

bucle for

Publicado por Eduardo (25 intervenciones) el 28/11/2016 19:14:57
Creo que estoy equivocado, en el primer bucle se llena el diccionario myDictionary con la variable kmer junto con += 1; y genome es una LISTA de donde se nutre kmer de acuerdo a los cortes y debido al bucle, creo que esta afirmación es más correcta?

perdona las molestias, te dejo todo el programa por si te interesa mirarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Open the input text file.
f = open('problem001.txt', 'r')
 
myDictionary = {}
 
# First line contains the string Text
genome = f.readline().rstrip('\n')
# Second line contains k
k = int(f.readline().rstrip('\n'))
 
f.close()
 
# Number of characters in the string
numChars = len(genome)
 
# Step through the string 1 char at a time and substring out each k characters
for i in range (0, numChars - k + 1):
    kmer = genome[i:i+k]
    if kmer in myDictionary:
        myDictionary[kmer] += 1
    else:
        myDictionary[kmer] = 1
 
maxValue = 0
answer = ''
# Sort the keys in the dictionary
for w in sorted(myDictionary, key=myDictionary.get, reverse=True):
    if myDictionary[w] >= maxValue:
        maxValue = myDictionary[w]
        answer += w + ' '
        print w, myDictionary[w]
 
print (answer )


un saludo y muchas gracaias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar