2017-08-02 2 views
0

Hoffentlich ist dies ein einfacher. Ich habe die Foren und Google durchforstet, aber keine Lösung gefunden.Zählen der Anzahl der Ausgaben in einem Tupel

HINWEIS: Ich habe das Problem beantwortet, aber ich hatte gehofft, sie könnten eine Möglichkeit sein, dies in Python zu tun.

Problem: Ich möchte die Anzahl der verschiedenen Iterationen (Kombinationen) innerhalb einer for-Schleife zählen. Ich habe das getan, und listet auf, hilft, aber es startet neu, wenn die neue Kombination beginnt. Der lange Weg dahin war das Speichern der Liste in einer CSV und das Zählen der Kombinationen in Excel (was nicht schlecht ist), aber ich hatte gehofft, dass es eine Möglichkeit gibt, diese Nummer in Python zurückzugeben.

import itertools 
import pandas as pd 
import numpy as np 
import csv 

stuff = ['imp1', 'imp2', 'imp3','imp4', 'click1', 'click2', 'click3', 'click4'] 

results = [] 

for combination in range(0, len(stuff) + 1): 
    for subset in enumerate(itertools.combinations_with_replacement(stuff, combination)): 
     results.append(subset) 

with open('Combinations_1.csv', 'wb') as myfile: 
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL) 
    wr.writerow(results) 

Kurz, das gibt mir, was ich brauche, aber ich frage mich, ob es eine „value_counts“ Typ war Funktion (ähnlich, was in Pandas verwendet), um die Anzahl der verschiedenen einzigartigen Kombinationen oder Permutationen zu zählen.

Danke, Adrian

+1

Warum Sie nicht verwenden ein einfacher Zähler in Ihrer For-Schleife? Es sollte nach jedem aktualisiert werden: 'results.append (subset)'. Zum Beispiel "count + = 1" – CunivL

Antwort

1

Sie benötigen einen Zählervariable hinzuzufügen, und legen Sie sie Ihr innen für Schleife:

ls = [] 
count = 0 
for element in enumerate(range(10)): 
    ls.append(element) 
    count += 1 

print count 

10 

im Code Implementierung

results = [] 
count = 0 

for combination in range(0, len(stuff) + 1): 
    for subset in enumerate(itertools.combinations_with_replacement(stuff, 
    combination)): 
     results.append(subset) 
     count += 1 
+0

Beide funktionieren perfekt. Vielen Dank. Wusste, es wäre etwas Einfaches, an das ich nicht gedacht hätte! Schätze, dass du mir hilfst. – AdrianC

Verwandte Themen