1
votes

impression de la liste et de la liste imbriquée côte à côte

Directement à la question. deux listes. une est imbriquée et une autre est normale.

def details():
    for i in b:
        for j in i:
            for k in a:

Comment imprimer au-dessus de deux listes comme celle-ci (côte à côte et sans, []).

Name   : n1
Age    : 12
Class  : 1st
Marks  : 40
Grade  : b


3 commentaires

pouvez-vous mentionner les résultats attendus plus élaborés? Est-ce que toutes les informations sur les étudiants devraient être incluses.


print (* (f "{k} \ t: {v}" pour i dans b pour k, v dans zip (a, i)), sep = "\ n") ou print ("\ n --- \ n" .join ("\ n" .join (f "{k} \ t: {v}" pour k, v dans zip (a, i)) pour i dans b ))


Non, juste un étudiant puis un autre. comme des boîtes.


5 Réponses :


1
votes

Vous pouvez essayer quelque chose comme ça avec enumerate :

for i in b:
    for idx,j in enumerate(i):
        print("{:<5}".format(a[idx]),":",j)


2 commentaires

merci cela a aidé. Mais on voit que certains articles sont en zigzag à l'impression. Comme certains éléments en b sont du côté gauche et certains sont aliénants à droite, pourquoi?


Heureux que cela vous aide :) .C'est parce que les différentes longueurs des cordes ,. Essayez la dernière modification de ma réponse en utilisant le format. Consultez les informations utiles sur le format ici . Si cela vous aide, vous pouvez l'accepter , je l'apprécierai :)



3
votes

Bouclez simplement sur la liste des listes b et zippez chaque liste interne avec les clés de a:

Name  : n1
Age   : 12
Class : 1st
Marks : 40
Grade : b

Name  : n2
Age   : 14
Class : 1st
Marks : 70
Grade : a

Name  : n3
Age   : 16
Class : 2nd
Marks : 90
Grade : s

Name  : n4
Age   : 14
Class : 3rd
Marks : 40
Grade : b

Name  : n5
Age   : 12
Class : 1st
Marks : 50
Grade : b

Name  : n6
Age   : 18
Class : 3rd
Marks : 30
Grade : c

Name  : n7
Age   : 11
Class : 1st
Marks : 80
Grade : a

Name  : n8
Age   : 10
Class : 2nd
Marks : 20
Grade : d

Résultat:

a = ['Name', 'Age', 'Class', 'Marks', 'Grade']
b = [['n1', 12, '1st', 40, 'b'],
     ['n2', 14, '1st', 70, 'a'],
     ['n3', 16, '2nd', 90, 's'],
     ['n4', 14, '3rd', 40, 'b'],
     ['n5', 12, '1st', 50, 'b'],
     ['n6', 18, '3rd', 30, 'c'],
     ['n7', 11, '1st', 80, 'a'],
     ['n8', 10, '2nd', 20, 'd']]

for inner in b:
     for key, value in zip(a, inner):
          print(f"{key:<5} : {value}")
     print()

Voir mini-documentation de langage de format de chaîne pour mettre en forme votre chaîne avec des espaces.


1 commentaires

Merci monsieur, cela a aidé.



0
votes

Vous pouvez accéder simplement comme ceci

for i in b:
    for j in range(len(a)):
        print(a[j]+" : "+str(i[j]))


0 commentaires

0
votes

Voici ce que vous pouvez faire:

Name   : n1
Age    : 12
Class  : 1st
Marks  : 40
Grade  : b
------------
Name   : n2
Age    : 14
Class  : 1st
Marks  : 70
Grade  : a
------------
Name   : n3
Age    : 16
Class  : 2nd
Marks  : 90
Grade  : s
------------
Name   : n4
Age    : 14
Class  : 3rd
Marks  : 40
Grade  : b
------------
Name   : n5
Age    : 12
Class  : 1st
Marks  : 50
Grade  : b
------------
Name   : n6
Age    : 18
Class  : 3rd
Marks  : 30
Grade  : c
------------
Name   : n7
Age    : 11
Class  : 1st
Marks  : 80
Grade  : a
------------
Name   : n8
Age    : 10
Class  : 2nd
Marks  : 20
Grade  : d
------------

Sortie:

a = ['Name', 'Age', 'Class', 'Marks', 'Grade']
b = [['n1', 12, '1st', 40, 'b'],
     ['n2', 14, '1st', 70, 'a'],
     ['n3', 16, '2nd', 90, 's'],
     ['n4', 14, '3rd', 40, 'b'],
     ['n5', 12, '1st', 50, 'b'],
     ['n6', 18, '3rd', 30, 'c'],
     ['n7', 11, '1st', 80, 'a'],
     ['n8', 10, '2nd', 20, 'd']]

for lst in b:
    for t in [n for n in zip(a,lst)]: # For tuple in the list of tuples generated by zip()
        print(f"{t[0].ljust(7)}: {t[1]}") # Print the 0 index (first element) of the tuple with ljust (padding) of 7 spaces, followed by a colon, space, and the 1 index (second element) of the tuple
    print('------------')


1 commentaires

Merci. Je ne comprends pas cette partie print (f "{t [0] .ljust (7)}: {t [1]}"). Je pense que c'est trop avancé pour moi.



0
votes

Simple Pythonic-one-liner, avec un affichage élégant:

print(*[f"{a[x]:6}: {z}" for i in b for x,z in enumerate(i)], sep='\n')


0 commentaires