-1
votes

Comment convertir la liste en 20 matrices de colonnes

Je fais un programme qui prend un fichier texte qui ressemble à quelque chose comme ceci:

1
0
1
1
1

et la convertit en liste:

['1', '0', '1', '1', '1', '1']

Le fichier comporte 400 lignes afin que je souhaite la convertir en une matrice de 20 colonnes de 20 rangées.


2 commentaires

je fais un programme Pouvez-vous montrer ce que vous avez fait jusqu'à présent


Que comptez-vous faire avec ces données une fois que vous l'avez dans votre structure de 20 par 20? Serait-il la peine d'être envisagé de number?


3 Réponses :


5
votes

Utilisez simplement la tranchée pour le calculer toutes les 20 entrées:

lines = [*range(1,401)]

rows_cols = [lines[i:i + 20] for i in range(0, len(lines), 20)]


2 commentaires

Remarque: Numpy.Reshape fait cela efficacement dans un Appel de fonction lisible unique, si vous allez faire des calculs numériques avec elle ...


+1 pour la solution one-liner! Pouvez-vous l'écrire comme une addition / édition de manière moins pythonique, il est donc plus facile de comprendre pour les débutants Python?



0
votes

Ceci permet d'enregistrer le caractère dans 20 colonnes, si ce n'est que le nombre de lignes ne sont pas multiples de 20, il créera une liste moins d'élément que 20 et l'ajoutez dans la liste principale

solu =[]
leng = 20
with open('result.txt','r') as f:
    sol = f.readlines()
    tmp = []
    for i in sol:
        if len(tmp)<leng:
            tmp.append(i.strip('\n'))
        else:
            print(tmp)
            solu.append(tmp)
            tmp=[]
    solu.append(tmp)



print(solu)


0 commentaires

0
votes

Détecter les caractères un par un comptant en même temps combien de caractères avez détectés. Il y a deux cas un cas lorsque vous détectez le caractère et le compteur est inférieur à 20 et l'autre lorsque vous détectez le personnage NewLine pour lequel vous ne mettez pas à jour le compteur. Par conséquent, dans le premier cas, le caractère détecté doit être attribué à la liste (mise à jour en même temps la variable de colonne), tandis que sur l'autre cas, vous pouvez ignorer la nouvelle ligne et continuer avec le caractère suivant du fichier texte si le compteur est moins plus de 20. Dans le cas où le compteur est 20, vous simplement mettre à jour la variable qui représente les lignes de la liste.


0 commentaires