195 lines
3.2 KiB
Python
195 lines
3.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Fri Oct 4 08:06:51 2019
|
|
|
|
@author: suwako
|
|
"""
|
|
|
|
# Structures de données
|
|
|
|
a = [0, 1, 'abc', 4.5, 'de', 6] # un niveau
|
|
b = [[], [1], [1, 2], [1, 2, 3]] # deux niveaux
|
|
|
|
a[2] # On attend 'abc'
|
|
b[3][1] # On attend 2
|
|
|
|
a[1:5] # Slicing
|
|
a[1:-1] # La même chose
|
|
a[:4] # On peut ommetre une partie
|
|
a[-3:]
|
|
li = list(range(11)) # Création d'une liste à partir d'une énumération
|
|
li[2:9:3] # On peut rajouter un pas
|
|
li[3::2]
|
|
li[:-1:2]
|
|
li[-1:0:-1]
|
|
|
|
list("Louis-Le-Grand")
|
|
|
|
[x for x in range(11) if x * x <= 50]
|
|
|
|
a, b = [1, 2, 3], [2, 4, 6]
|
|
[(x, y) for x in a for y in b]
|
|
[(x, y, z) for x in range(1, 20) for y in range(x, 20) for z in range(y, 20) if x**2 + y**2 == z**2]
|
|
|
|
# Concaténation
|
|
[2, 4, 6, 8] + [1, 3, 5, 7]
|
|
|
|
# Duplication
|
|
[1, 2, 3]*3
|
|
|
|
# Mutation
|
|
li = list(range(11))
|
|
li[3] = 'a'
|
|
li[3:7] = 'abc' # On perd un élément ici
|
|
li
|
|
|
|
li = list(range(10))
|
|
li[1::2] = li[0::2]
|
|
li
|
|
|
|
li = list(range(11))
|
|
del li[3:6] # Suppression d'élements
|
|
li
|
|
|
|
li = ['a', 'b', 'c', 'd']
|
|
li.append('e') # Ajout d'élément
|
|
li
|
|
li.insert(2, 'x') # Insertion d'élément
|
|
li
|
|
|
|
li = list(range(1, 6)) * 2
|
|
li.remove(4) # On retire la première occurence de 4
|
|
li
|
|
|
|
li.pop(-1) # Affiche le dernier élement et le retire de la liste
|
|
li
|
|
|
|
li = list(range(1, 4)) * 2
|
|
li.reverse() # On renverse la liste ; Attention, une méthode modifie l'objet
|
|
li
|
|
|
|
li.sort() # On trie la liste par ordre croissant
|
|
li
|
|
|
|
sorted(li) # Ici, on trie également, mais on ne modifie pas la liste originale
|
|
li
|
|
|
|
list('abcde') # Transformation de type
|
|
str(list('abcde'))
|
|
tuple([1, 2, 3, 4])
|
|
|
|
# Les listes sont mutables
|
|
lst = [1, 2, 3]
|
|
lst[0] = 4
|
|
lst
|
|
|
|
tup = (1, 2, 3)
|
|
tup[0] = 4
|
|
chr = 'abc'
|
|
chr[0] = 'd'
|
|
|
|
l1 = [1, 2, 3]
|
|
id(l1)
|
|
tup1 = (1, 2, 3)
|
|
id(tup1)
|
|
l1[0] = 4
|
|
id(l1)
|
|
tup1 = (4, 2, 3)
|
|
id(tup1)
|
|
|
|
l2 = l1
|
|
id(l1) == id(l2)
|
|
tup2 = tup1
|
|
id(tup1) == id(tup2)
|
|
|
|
l1[0] = 1
|
|
l2
|
|
tup1 = (1, 2, 3)
|
|
tup2
|
|
|
|
l3 = l1[:]
|
|
l3 = l1.copy()
|
|
l3 = [x for x in l1]
|
|
|
|
l1 = [[1, 2, 3], [4, 5, 6]]
|
|
l2 = l1[:]
|
|
id(l1) == id(l2)
|
|
id(l1[0]) == id(l2[0])
|
|
|
|
from copy import deepcopy
|
|
l3 = deepcopy(l1)
|
|
id(l1) == id(l3)
|
|
id(l1[0]) == id(l3[0])
|
|
|
|
def somme(l):
|
|
s = 0
|
|
for x in l:
|
|
s += x
|
|
return s
|
|
def moyenne(l):
|
|
s = 0
|
|
for x in l:
|
|
s += x
|
|
return s / len(l)
|
|
|
|
def variance(l):
|
|
n = len(l)
|
|
s = c = 0
|
|
for x in l:
|
|
s += x
|
|
c += x * x
|
|
return c/n - (s/n) * (s/n)
|
|
|
|
def maximum(l):
|
|
m = l[0]
|
|
for x in l:
|
|
if x > m:
|
|
m = x
|
|
return m
|
|
def indice_max(l):
|
|
i, m = 0, l[0]
|
|
for k in range(1, len(l)):
|
|
if l[k] > m:
|
|
i, m = k, l[k]
|
|
return i
|
|
|
|
def maximum(l):
|
|
m = l[0]
|
|
for x in l:
|
|
if x > m:
|
|
m = x
|
|
return m
|
|
|
|
def indice_du_max(l):
|
|
i, m = 0, l[0]
|
|
for (k, x) in enumerate(l):
|
|
if x > m:
|
|
i, m = k, x
|
|
return i
|
|
def cherche(x, l):
|
|
k, rep = 0, False
|
|
while k < len(l) and not rep:
|
|
rep = l[k] == x
|
|
k += 1
|
|
return rep
|
|
def cherche(x, l):
|
|
for y in l:
|
|
if y == x:
|
|
return True
|
|
return False
|
|
|
|
(x in l)
|
|
|
|
def cherche_dicho(x, l):
|
|
i, j = 0, len(l)
|
|
while i < j:
|
|
k = (i + j) // 2
|
|
if l[k] == x:
|
|
return True
|
|
elif l[k] > x:
|
|
j = k
|
|
else:
|
|
i = k + 1
|
|
return False
|