Bonjour après plusieurs recherche je me remet à ce forum, je m'avance sur mes cours d'ISN pendant les vacances afin de mieux comprendre ce que l'on étudie. Notre professeur nous a donné ce code :
l = 10*[0]
for i in range(len(l)): l[i] =10 *[0]
l[0][0]=1
print (l)
Je sais que cela correspond à un tableau mais je n'ai pas compris comment a-t-il était crée et que signifie les 3 premières lignes. Quelqu'un pourrai m'expliquer s'il vous plaît ? Merci.
l=10*[0]
for i in range(len(l)):
l[i]=10*[0]
l[0][0]=1
print(l)
la première ligne créé un tableau de 10 fois 0, comme ceci:
[0,0,0,0,0,0,0,0,0,0]
la seconde ligne parcourt le tableau jusqu’à la case len(l) (longueur du tableau) et remplace tous les 0 par un autre tableau de 10 fois 0, comme ceci:
Tu utilises des print sur chaque variable et tu vois ce que ça donne...
Tu crées 10 listes comprenant pour chaque liste 10 entiers de valeur 0.
3ème ligne tu affectes la valeur 1 au 1er élément de la 1ère liste.
L'équivalent pourrait être
l = [[0 for i in range(10)] for j in range(10)]
l[0][0] = 1
print (l)
C'est tout à fait normal de pas comprendre, ton professeur sort un 10 (genre de nombre magique, sans explication) et démerdez-vous !
Plus compréhensible aurait été
COLUMN = 10
LINE = COLUMN
array = [] # Création du tableau vide final
for x in range(LINE): # Nombre de lignes qu'on va créér
arr = [] # Création du sous tableau
for y in range(COLUMN): # COLUMN: taille de arr où on va placer l'élément 0
arr.append(0) # Ajout de la valeur 0 dans la sous liste actuelle
array.append(arr) # Ajout de la nouvelle liste créée dans tableau final
array[0][0] = 1 # Ajout de la valeur 1 au 1er élément de la 1ère sous liste de array
print (array)
Sachant que mettre le nom l comme variable est anti-pythonique, je dirais que l'enseignant est aussi débutant dans le langage.
Bref ça va être dur pour toi, va sans doute falloir être autonome et démerde sur ce coup concernant ton projet.
Je te conseille ce livre numérique et gratuit pour débuter.
Sachant que mettre le nom l comme variable est anti-pythonique, je dirais que l'enseignant est aussi débutant dans le langage.
Vu l'extrait de code c'est clair... initialiser un tableau comme ça quelle horreur
@SofianeKoko : le code que je t'ai montré ça s'appelle de la compréhension de liste ; c'est un terme un peu obscur pour dire qu'on peut par exemple initialiser, modifier une liste en y ajoutant un peu de logique : des filtres, des fonctions, etc, sans forcément passer par une boucle for. C'est qqch qui vient de la programmation fonctionnelle, et puisqu'on peut en profiter en Python, autant ne pas s'en priver, c'est très puissant
Autre exemple : je veux la liste des entiers de 1 à 20 qui sont des multiples de 3
# créer la liste des entiers de 1 à 20 inclus :
>>> liste = list(range(1, 21))
# afficher les éléments de 'liste' qui sont multiples de 3
>>> print([i for i in liste if i % 3 == 0])
[3, 6, 9, 12, 15, 18]
N'hésite pas à faire tes propres tests dans l'interpréteur ; c'est très pythonique et très utile
"Bref ça va être dur pour toi, va sans doute falloir être autonome et démerde sur ce coup concernant ton projet"
Je l'ai déduit en début d'année je m'y suis préparer à cette autonomie lol. Mon projet de BAC avance bien mais quand j'ai demandé à mon professeur comment créer un tableau avec python et qu'il m'envoie ce code en me disant "Tu devrai y arriver tout seul maintenant", je me demande si sont but est de m'aider ou de me mettre des bâtons dans les roues...
Bref merci à vous, je comprend aisément comment un tableaux fonctionne maintenant. De plus j'ai vu que pour ajouter un élément ou en supprimer ce sont les même fonctions que pour les listes. Or quelque chose m'embête encore, est-il possible de démarrer les deux listes à 1 ? Car pour une bataille navale c'est assez "moche" d'utiliser (0;0) comme coordonnées.
Tu as déterré un sujet de 2016. Tu aurais dû poster ton propre sujet. Comment comptes-tu acquérir les nombres en question? Pour trier, il y a la méthode sort() As-tu du code pour la recherche dichotomique? Ou du moins du pseudo-code ou l'algorithme?
Le Tout est souvent plus grand que la somme de ses parties.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Je ferme ce sujet. En cas de désaccord, me contacter par MP.
Le Tout est souvent plus grand que la somme de ses parties.