Faisons diverses choses en utilisant la notation d'inclusion de liste de Python

1.Tout d'abord

C'est la première fois que j'écris un article sur Python. Récemment, j'ai aimé une langue mineure appelée nim, mais comme c'est vraiment mineure, j'étudie Python en parallèle, et passe des jours à enseigner à mes amis "nim is good, George ...". .. Eh bien, l'histoire est fausse, mais cette fois, j'écrirai un article sur la façon de s'habituer à la notation d'inclusion de liste tout en résolvant divers problèmes avec la notation d'inclusion de liste en Python.

2. Comment exprimer la notation d'inclusion de liste (expression lambda, instruction if, etc.)

D'abord des bases

Je veux faire une liste avec la même valeur pour tous les éléments.

python


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

Je veux faire une liste avec des valeurs qui suivent une certaine règle comme éléments.

Par exemple, la séquence d'égalité de l'intersection 1

python


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

Utilisation de la fonction 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]

#Ou même comme ça
b=[i**2 for i in range(10)]
#[0,1,4,9,16,25,36,49,64,81]

Utilisons l'expression lambda

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]

Je souhaite utiliser l'instruction if pour créer une liste avec uniquement les éléments qui remplissent les conditions.

Lors de l'utilisation uniquement si

python


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

Lors de l'utilisation de 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. Essayez de résoudre divers problèmes

Les deux côtés de la médaille

100 pièces sont alignées d'affilée avec le recto vers le haut. Retournez le deuxième multiple de 2. Retourner le multiple de 3. Retourner le multiple de 4. Lorsque vous faites cela dans l'ordre, quel est le numéro de la pièce sur le devant?

python


#Le tableau est 1,Le dos est 0
#Pour le deuxième et au-dessus, la cote et la cote de quelques nombres déterminent s'il s'agit de l'avant ou de l'arrière.
#Par exemple, quand il est 2, il se retourne une seule fois ⇒"Si le nombre de fractions est pair, la pièce est de retour"
[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]
#J'ai remarqué quand j'ai essayé ça, mais x**La réponse est le nombre qui peut être représenté par 2....(x**Parce que la fraction x de 2 se chevauche)

#Une autre solution
import math
[print([i**2 for i in range(2,int(math.sqrt(100))+1)])]
#[4, 9, 16, 25, 36, 49, 64, 81, 100]

#Il semble que vous puissiez également importer la bibliothèque, je vais donc l'essayer
[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]

Non, je deviens fou

Nombre complet jusqu'à 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]

Tri en quelque sorte à partir de nombres aléatoires

python


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

Nombres premiers jusqu'à 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]
"""

Essayez de résoudre une équation linéaire ternaire

Par exemple, "Il y a respectivement 40, 60, 30 balles de 500 yens, 100 yens et 10 yens. Combien de pièces chacune doit-elle être utilisée pour obtenir un total de 9 000 yens? Il peut être utilisé lorsqu'il y a un problème comme.

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]]

La partie "sinon" sur la deuxième ligne peut être "si". Comme le if de [i pour i dans range (10) if i% 2 == 0], s'il est vrai, ce sera un élément de la liste et il ne doit pas être faux, donc lors de l'impression de la liste entière, [{'A' : 40, 'B': 60, 'C': 30, 'x': 9000}] ou [].

4. Enfin

En aparté (ou plutôt, comme mémorandum personnel), j'écrirai sur la liste ci-dessus ou fréquente. En python, la valeur booléenne ~~ de print () semble être False ~~ (la valeur de retour était None comme indiqué ci-dessous), par exemple, vous pouvez le faire.

python


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

De plus, en python, quand A est vrai, "A ou B" est évidemment vrai, donc B n'est pas évalué. (Idem pour "A et B" quand A est faux)

python


[print(5) or print(3) and print(4)]
#5
#3
#4 n'est pas imprimé

Je l'ajouterai quand je pourrai refaire quelque chose de nouveau. La notation d'inclusion de liste semble être complète Turing ...

Recommended Posts

Faisons diverses choses en utilisant la notation d'inclusion de liste de Python
Notation d'inclusion
Notation d'inclusion de liste
Notation d'inclusion
[Python] Compréhension de liste Différentes façons de créer une liste
[Introduction à Udemy Python3 + Application] 60. Notation d'inclusion de liste