Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment créer un tableau sous python

Sujet résolu
Anonyme
15 avril 2016 à 13:56:14

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.

  • Partager sur Facebook
  • Partager sur Twitter
15 avril 2016 à 14:14:01

Salut, 

ton code serait mieux présenté comme ça:

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:

[[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],.......]

la ligne l[0][0]=1 signifie que l'on prend le premier élément du premier tableau et qu'on lui affecte la valeur 1, par exemple,

l[0][1]=1 signifierais la même chose pour le deuxième élément du premier tableau, etc...

et la derniere ligne affiche le tableau.

Si tu veux mieux comprendre, essaie ce code:

l=10*[0]
print(l)
for i in range(len(l)):
	l[i]=10*[0]
print(l)
l[0][0]=1
print(l)
l[0][1]=2
print(l)




  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2016 à 14:16:07

Ah Merci c'est devenu beaucoup plus facile d'un coup
  • Partager sur Facebook
  • Partager sur Twitter
15 avril 2016 à 14:20:25

on peut initialiser un tableau de tableaux plus simplement  :
l = [[0 for i in range(10)] for i in range(10)]

-
Edité par noobien 15 avril 2016 à 14:20:38

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2016 à 14:24:45

Oui, c'est vrai, noobien, maintenant il faut que je réfléchisse a comment démarrer le tableau à 1 et non 0, cela ne doit pas être bien compliqué

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2016 à 14:26:22

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.

  • Partager sur Facebook
  • Partager sur Twitter
15 avril 2016 à 14:43:39


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

-
Edité par noobien 15 avril 2016 à 14:45:19

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2016 à 15:10:14

"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.

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2016 à 15:25:51

Tu peux demander à l'utilisateur du programme de mettre 1 par exemple, pour toi l'index sera 1-1 soit l'index 0, tout simplement...

  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2022 à 18:22:26

bonjour mon prof veux que je cré un programme de 1000 case puis les ranger dans l'ordre croissante puis effectuer une recherche dichotomique

  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2022 à 19:26:00

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?
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

25 janvier 2022 à 22:05:01

@BrownFamily Bonsoir, merci de ne pas déterrer d'ancien sujet résolu.

Déterrage

Citation des règles générales du forum :

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.

  • Partager sur Facebook
  • Partager sur Twitter