range()
¶range()
-uttryck. Se till att ni förstår vilka värden ni kommer få från det.range(stop)
- implicit: start=0, step=1range(start, stop)
- implicit: step=1range(start, stop, step)
- alla värden explicitastep
> 0: heltal från start, fortsätt så länge som heltalen är mindre än stopstep
< 0: heltal från start, fortsätt så länge som heltalen är större än stoprange()
¶range()
returnerar ett range-objekt.list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(3,8))
[3, 4, 5, 6, 7]
list(range(4, 10, 2))
[4, 6, 8]
range()
och negativa step
-argument¶(step
< 0: heltal från start, fortsätt så länge som heltalen är större än stop)
list(range(8, 3, -1))
[8, 7, 6, 5, 4]
list(range(12, 2, -3))
[12, 9, 6, 3]
index1 = 6
alist[index1] > max_val
cur_val = alist[index1]
index1 < other_index
range()
-uttryck. Se till att ni förstår vilka värden ni kommer få från det.Använd muggarna som representation av er lista, men var uppmärksamma på att för vissa algoritmer så kan det finnas tillfällen där ett värde temporärt förekommer på mer än ett ställe.
Om ni blir klara innan rasten, säg till så får ni en extra algoritm
def sort_list1(alist):
"""Sortera värden i alist i stigande ordning."""
# Sortera alist bakifrån, störst värde hamnar på fill_pos
# fill_pos börjar längst till höger i listan och vandrar åt vänster
for fill_pos in range(len(alist)-1, 0, -1):
pos_of_max = 0
# Leta efter största värdet mellan index 1 och fill_pos
for position in range(1, fill_pos+1):
# Spara position för högsta påträffade värdet
if alist[position] > alist[pos_of_max]:
pos_of_max = position
# Byt plats på värdena på fill_pos och pos_of_max
temp = alist[fill_pos]
alist[fill_pos] = alist[pos_of_max]
alist[pos_of_max] = temp
# Anmärkning: funktionen ändrar i existerande lista. Inget returvärde behövs.
def sort_list2(alist):
"""Sortera värden i alist i stigande ordning."""
# Varje iteration flyttas värdet på index till den plats som göra att så att alla
# värden till vänster om det är mindre än det värdet.
#
# index börjar på andra värdet listan och vandrar åt höger i efterföljande iterationer
for index in range(1, len(alist)):
# currentvalue är det värde som vi ska hitta rätt plats för
# vi börjar leta från position
currentvalue = alist[index]
position = index
# Kopiera värdet på position-1 till position (dvs kopiera ett steg åt höger).
# Loopen vandra åt vänster i listan och fortsätter så länge som vi stöter på
# värden som är större än currentvalue.
#
# Efter loopen har vi gjort plats för currentvalue på platsen position
while position > 0 and alist[position-1] > currentvalue:
alist[position] = alist[position-1]
position -= 1
# Kopiera current value till index position i alist (där det nu finns en lucka)
alist[position] = currentvalue
# Anmärkning: funktionen ändrar i existerande lista. Inget returvärde behövs.
def sort_list3(a_list):
"""Sortera värdena i a_list i stigande ordning."""
# Gå igenom listan från slutet av listan (index i), efter varje iteration kommer
# värdet på index i att vara på sin korrekta plats. Nästa iteration tittar vi på
# indexet ett steg till vänster.
for i in range(len(a_list) - 1, 0, -1):
# Gå igenom listan från index j till i, flytta det största värdet åt höger.
# Efter loopen kommer det största värdet mellan index i och j att vara på
# rätt plats (på index i).
for j in range(i):
# Se till så att elementen på plats j och j+1 står i stigande ordning.
if a_list[j] > a_list[j + 1]:
# Byt plats på elementen på index j och j+1 om det behövs
temp = a_list[j]
a_list[j] = a_list[j + 1]
a_list[j + 1] = temp