2
votes

Comment imprimer chaque nième index d'une liste python sur une nouvelle ligne?

J'essaye d'imprimer une liste et pour chaque 5 index, il imprime une nouvelle ligne. Par exemple, si j'ai:

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   .......

le résultat serait:

   lst = [1,2,3,4,5,6,7,8,9,10]

   for i in lst:
       if len(lst) > 5:
          print(lst,'\n')

J'ai essayé ceci jusqu'à présent:

XXX

mais tout ce que j'obtiens est:

  1 2 3 4 5
  6 7 8 9 10

Comment puis-je faire cela?

Merci pour l'aide!


1 commentaires

Quelle est votre sortie si len (liste) n'est pas divisible par votre index?


4 Réponses :


3
votes

A utilisé une boucle for avec un pas:

1 2 3 4 5
6 7 8 9 10

Si vous voulez être plus sophistiqué avec le formatage, vous pouvez utiliser la décompression d'arguments comme ceci: print (* list [i: i + n_indices]) et obtenez des sorties dans ce format:

n_indices = 5
lst = [1,2,3,4,5,6,7,8,9,10]

for i in range(0, len(lst), n_indices):
    print(lst[i:i+n_indices])

>>>[1, 2, 3, 4, 5]
>>>[6, 7, 8, 9, 10]


1 commentaires

Je suppose qu'il veut une sortie formatée uniquement .join: print ('' .join (lst [i: i + indices]) ... sera bon pour lui :)



2
votes

Essayez ceci:

1 2 3 4 5
6 7 8 9 10

le résultat sera:

a = [1,2,3,4,5,6,7,8,9,10]
for i in [a[c:c+5] for c in range(0,len(a),5) if c%5 == 0]:
    print(*i)

vous pouvez également remplacer 5 par tout autre nombre ou variable.


3 commentaires

Salut, cela vous dérange-t-il si j'utilise l'argument * i pour le formatage de ma réponse? C'est beaucoup mieux que l'actuel "" .join () que j'ai en cours


@Primusa Bien sûr que ça va, je voterai aussi votre réponse.


Pas de problème @Primusa, je pense que c'est bien si vous regardez aussi sep = dans la fonction print . c'est bon. quelque chose comme ceci print (* i, sep = '-') il imprimera: 1-2-3-4-5



0
votes

Un peu plus idiomatique que les autres réponses:

In [1]: lst = range(1, 10001)

In [2]: n = 5

In [3]: %%timeit
    ...: for group in zip(*[iter(lst)] * n):
    ...:     group
    ...:
236 µs ± 49.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [4]: %%timeit
    ...: for i in range(0, len(lst), n):
    ...:     lst[i:i+n]
    ...:
1.32 ms ± 184 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

1 2 3 4 5
6 7 8 9 10

Pour les listes plus volumineuses, c'est aussi beaucoup plus rapide:

n = 5
lst = [1,2,3,4,5,6,7,8,9,10]

for group in zip(*[iter(lst)] * n):
    print(*group)


0 commentaires

0
votes

Vous pouvez utiliser le code ci-dessous: -

for i in range(0,len(a),5):
    print(" ".join(map(str, a[i:i+5])))

Cela vous donnera la sortie souhaitée.

 Code Snip


0 commentaires