Der folgende Code betrachtet eine Liste von tuple
s (jeweils mit zwei Elementen) namens Paare, und erstellt eine Bank aller Elementnamen in der Liste. Es zählt dann, wie oft ein Element in einem tuple
erscheint und teilt dieses durch eine Anzahl von Elementen. Ich möchte die durchschnittliche Anzahl der Interaktionen (mal in einem Tupel mit einem anderen Element) pro Element für die gesamte list
.Pythonic Träume: durchschnittliche Anzahl der Erscheinungen des Elements in der Liste der Tupel
def average(pairs):
intcount = 0
bank = []
for j,k in pairs:
if not j in bank:
bank.append(j)
if not k in bank:
bank.append(k)
if j in bank:
intcount += 1
if k in bank:
intcount += 1
output = intcount/len(bank)
return output
Der Code funktioniert gut, ist aber ein Schandfleck. Ich versuche zu lernen, mehr Python Code zu schreiben, aber jedes Mal wenn ich versuche, meinen Code in weniger Zeilen zu verdichten, wird es falsch. Ein Beispiel für meine abgründigen Versuch:
def average(pairs):
intcount = 0
bank = []
if not j or k in bank for j,k in pairs:
bank.append(if not j in bank else k if not k in bank else ' ' for j, k in interactions)
#then some kind of line streamlining how the intcount increments?
der Code ist nicht so schlecht, aber Sie können die 3. und 4. if-Anweisungen nicht trivial kombinieren, und es gibt keinen Grund, eine Ausgabevariable zu definieren, nur die rechte Seite davon zurückgeben. – Natecat
Wie würden die 3. und 4. if-Anweisungen aussehen, wenn kombiniert? Wenn ich j oder k in eine if-Anweisung setze, wobei der intcount inkrementiert wird, zählt es nur j, es sei denn, ich gebe k in seine eigene Anweisung ein. (Entschuldigung, ich konnte nicht herausfinden, wie man den Code in den Kommentaren zum arbeiten bringt ....: /) – Ouwan12
Wahrscheinlich verstehst du den Operator-Vorrang nicht vollständig. Ich vermute, Sie machen so etwas wie 'if j oder k in bank'. Python ist nicht englisch, und Sie können es nicht wie Englisch behandeln. Dieser Code prüft, ob j nicht Null ist, oder k ist in der Bank, nicht wenn entweder j oder k in der Bank ist. Sie wollen tatsächlich etwas wie "wenn j in Bank oder k in Bank – Natecat