6/12/20: Poste édité après que les commentateurs ont précisé que je n'ai pas fourni suffisamment d'informations dans OP.
Supposons que j'ai un fichier TSV (nommé "TSV-Test.txt") avec ce qui suit. Contenu: p> dans la première colonne, je veux vérifier si la ligne précédente a le même terme. J'ai lu le TSV dans une liste de listes. Comment puis-je boucler via la liste des listes pour faire ce chèque à chaque ligne pour le terme dans la première colonne? Pour référence, voici ce que j'ai fait jusqu'à présent: p> J'aimerais boucler la variable Arraytest avec une déclaration vraie / fausse. Je ne sais pas comment écrire ce code, mais j'espère qu'est-ce que j'essaie de faire en bas après: p> la sortie que je m'attends à: P > True
True
True
False
4 Réponses :
Ajoutez une nouvelle variable qui stocke la valeur précédente, puis effectuez simplement votre chèque contre cette variable. En supposant que vous souhaitiez seulement ajouter une ligne si la première valeur est la même que dans la ligne avant:
comparer simplement la valeur actuelle à la dernière lecture:
import csv
#read the tsv into python, tell python its a tsv
tsv_file = open("tsv-test.txt")
read_tsv = csv.reader(tsv_file, delimiter="\t")
#put tsv into a 2D array
arraytest = []
for line in read_tsv:
if arraytest and line[0] == arraytest[-1][0]:
# TODO: do something with the duplicate
pass
arraytest.append(line)
essayez d'énumérer pour tirer parti de l'utilisation de l'index.
read_tsv = open("tsv-test.txt").readlines()
arraytest = []
for idx,line in enumerate(read_tsv):
if idx == 0:
continue
if read_tsv[idx].split()[0] == read_tsv[idx-1].split()[0]:
arraytest.append(read_tsv[idx])
print(arraytest)
Vous pouvez essayer quelque chose comme ceci: sortie: p>
Comment cela est-ce que 'imprimer (read_tsv [i] [0] == read_tsv [i-1] [0])' est une méthode plus concise d'écrire une tradition si / autre déclaration?
J'ai fait cela dans ce cas parce que sur la base de read_tsv [i] [0] == read_tsv [i-1] [0] code> condition, vous devez imprimer vrai ou faux code> , donc, j'ai trouvé plus facile d'imprimer la condition, car cette condition va avoir l'une de ces deux valeurs true ou false code>.
Vous avez utilisé 'i == 0' pour signifier le premier élément de liste. 'i == 0' signifierait le premier élément de liste irrégrible de la longueur de la liste. Existe-t-il un moyen de signifier le dernier élément de liste qui fonctionnerait irrégrafer de la longueur de la liste?
Je viens de voir le commentaire. Oui, le dernier élément d'une liste est lorsque i == len (myList) -1 code>, par exemple: myList = ['A', 'B', 'C'] Code>, myList [len (myList) -1] = 'c' code>.
Quel terme de la ligne précédente? Donner un exemple de quand la déclaration IF est vraie
Ajoutez une nouvelle variable qui maintient toujours la valeur de la dernière itération de la boucle, puis comparez-la avec le courant actuel?
Est-ce un tableau de 2D NUMPY, ou une liste de listes? Du code je supposerais ce dernier. Et que voudriez-vous faire avec un dupliqué trouvé?
Informations complémentaires ajoutées pour @janchristophTherasa
Informations complémentaires ajoutées pour @ mrnobody33