Lassen Sie uns verschiedene Dinge mit Pythons Listeneinschlussnotation tun

1. Zuallererst

Ich schreibe zum ersten Mal einen Artikel über Python. Vor kurzem mag ich Nim, eine Nebensprache, aber da es wirklich Nebensprache ist, lerne ich parallel Python und verbringe meine Tage damit, meinen Freunden beizubringen, "Nim ist gut, George ...". .. Nun, die Geschichte ist aus, aber dieses Mal werde ich einen Artikel darüber schreiben, wie man sich an die Notation zur Aufnahme von Listen gewöhnt und gleichzeitig verschiedene Probleme mit der Notation zur Aufnahme von Listen in Python löst.

2. Wie man die Listeneinschlussnotation ausdrückt (Lambda-Ausdruck, if-Anweisung usw.)

Zunächst von den Grundlagen

Ich möchte eine Liste mit demselben Wert für alle Elemente erstellen.

python


a=[0 for i in range(10)]
#[0,0,0,0,0,0,0,0,0,0]

Ich möchte eine Liste mit Werten erstellen, die als Elemente einer bestimmten Regel folgen.

Zum Beispiel die Gleichheitsfolge von Schnittpunkt 1

python


a=[i for i in range(10)]
#[0,1,2,3,4,5,6,7,8,9]

Mit der Funktion f (x)

python


def f(x):
  return x**2
a=[f(i) for i in range(10)]
#[0,1,4,9,16,25,36,49,64,81]

#Oder sogar so
b=[i**2 for i in range(10)]
#[0,1,4,9,16,25,36,49,64,81]

Verwenden wir den Lambda-Ausdruck

python


a=[(lambda price,tax:price + (price * tax))(100*i,0.08) for i in range(10)]
#[0.0,108.0,216.0,324.0,432.0,540.0,648.0,756.0,864.0,972.0]

Ich möchte die if-Anweisung verwenden, um eine Liste mit nur den Elementen zu erstellen, die die Bedingungen erfüllen.

Bei Verwendung nur wenn

python


a=[i for i in range(10) if i%2==0]
#[0,2,4,6,8]

Bei Verwendung von if-else

python


a=[x if x%2==1 else 0 for x in range(10)]
#[0,1,0,3,0,5,0,7,0,9]

3. Versuchen Sie verschiedene Probleme zu lösen

Beide Seiten der Medaille

100 Münzen reihen sich mit der Vorderseite nach oben aneinander. Drehen Sie das zweite Vielfache von 2 um. Drehen Sie das Vielfache von 3 um. Drehen Sie das Vielfache von 4 um. Wenn Sie das der Reihe nach tun, welche Nummer ist die Münze auf der Vorderseite?

python


#Tabelle ist 1,Die Rückseite ist 0
#Für die zweite und darüber bestimmen die Gewinnchancen und Gewinnchancen einiger Zahlen, ob es vorne oder hinten ist
#Wenn es beispielsweise 2 ist, wird es nur einmal umgedreht ⇒"Wenn die Anzahl der Brüche gerade ist, ist die Münze zurück"
[print([k+1 for k,j in enumerate([0 if len([i for i in range(2,int(y/2)+1) if y%i==0])%2==0 
       else 1 for y in range(1,101)]) if j==1])]
#[4, 9, 16, 25, 36, 49, 64, 81, 100]
#Ich habe es bemerkt, als ich es versucht habe, aber x**Die Antwort ist die Zahl, die durch 2 dargestellt werden kann....(x**Weil sich der Bruchteil x von 2 überlappt)

#Eine andere Lösung
import math
[print([i**2 for i in range(2,int(math.sqrt(100))+1)])]
#[4, 9, 16, 25, 36, 49, 64, 81, 100]

#Es scheint, dass Sie die Bibliothek auch importieren können, also werde ich es versuchen
[print([i**2 for i in range(2,int([math.sqrt(100) for math in [__import__('math')]][0])+1)])]
#[4, 9, 16, 25, 36, 49, 64, 81, 100]

Nein, ich werde verrückt

Komplette Nummer bis 1000

python


[print([j for j in range(1,1001) if sum([i for i in range(1,int(j/2)+1) if j%i==0])==j])]
#[6,28,496]

Irgendwie nach Zufallszahlen sortieren

python


[print(sorted([int(rd.uniform(0,100)) for rd in [__import__('random')] for i in range(100)]))]

Primzahlen bis 1000

python


[print([i for i in range(2,1000) if 0 not in 
       [i%j for j in range(2,int([math.sqrt(i) for math in [__import__('math')]][0])+1)]])]
"""
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 
113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 
251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 
397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 
557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 
701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 
863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
"""

Versuchen Sie, eine ternäre lineare Gleichung zu lösen

Zum Beispiel: "Es gibt 40, 60, 30 Bälle mit 500 Yen, Bälle mit 100 Yen und Bälle mit 10 Yen. Wie viele Münzen sollten jeweils verwendet werden, um mit ihnen insgesamt 9000 Yen herzustellen?" Es kann verwendet werden, wenn es ein Problem wie gibt.

python


[ns 
 for ns in [dict()] if not(
        ns.update({"A":40}) or
        ns.update({"B":60}) or
        ns.update({"C":30}) or
        ns.update({"x":9000}) or
        print([[a,b,c] 
        for a in range(A+1) 
        for b in range(B+1) 
        for c in range(C+1) 
        if 500*a+100*b+10*c==x]))]

#[[14, 19, 10], [14, 20, 0], [15, 14, 10], [15, 15, 0], [16, 9, 10], [16, 10, 0], [17, 4, 10], [17, 5, 0], [18, 0, 0]]

Der "wenn nicht" Teil in der zweiten Zeile kann "wenn" sein. Wie das if von [i für i im Bereich (10), wenn i% 2 == 0], ist es, wenn es wahr ist, ein Element der Liste und darf nicht falsch sein. Wenn Sie also die gesamte Liste drucken, [{'A' : 40, 'B': 60, 'C': 30, 'x': 9000}] oder [].

4. Schließlich

Nebenbei (oder besser gesagt als persönliches Memorandum) werde ich über die obige oder häufige Liste schreiben. In Python scheint der ~~ boolesche Wert von print () False ~~ zu sein (der Rückgabewert war None, wie unten gezeigt). Sie können dies beispielsweise tun.

python


if print(5)==True:
    print("fxxk")
elif print(5)==None:
    print("brain fxxk")
else:
    print("brain")
#brain fxxk

Wenn in Python A wahr ist, ist "A oder B" offensichtlich wahr, sodass B nicht ausgewertet wird. (Gleiches gilt für "A und B", wenn A falsch ist)

python


[print(5) or print(3) and print(4)]
#5
#3
#4 wird nicht gedruckt

Ich werde es hinzufügen, wenn ich wieder etwas Neues machen kann. Die Listeneinschlussnotation scheint vollständig zu sein.

Recommended Posts

Lassen Sie uns verschiedene Dinge mit Pythons Listeneinschlussnotation tun
Einschlussnotation
Listeneinschlussnotation
Einschlussnotation
[Python] Listenverständnis Verschiedene Möglichkeiten zum Erstellen einer Liste
[Einführung in die Udemy Python3 + -Anwendung] 60. Listeneinschlussnotation