Retournez 100 cartes toutes les autres cartes pour la première fois, toutes les deux cartes pour la deuxième fois, et enfin demandez la carte retournée.
Code
#Q03 Retournez la carte
cards0 = [-1]*100 #la première. 1=table, -1=retour
cards = [-1, 1]*50 #Seconde
step = 3 #Combien de feuilles retourner
#Retournez la carte à chaque étape. Fin quand il n'y a plus de cartes à retourner
while cards0 != cards:
cards0 = cards[:]
for i in range(step-1, len(cards), step):
cards[i] *= -1
step += 1
#Montre combien de cartes sont retournées
backs = [i+1 for i in range(len(cards)) if cards[i] == -1]
print(backs)
list1 = [0] * 3
print(list1) # [0, 0, 0]
list2 = [0, 1] * 3
print(list2) # [0, 1, 0, 1, 0, 1]
Référence: https://note.nkmk.me/python-list-initialize/
En Python ~~ Puisque la copie du tableau est passée par référence ~~ Le type de liste est un objet ** mutable **, ~~ Lors d'une copie ~~ Parce qu'une simple affectation de variable partage un objet sans faire de copie de l'objet , Si vous modifiez le contenu de la liste d'une variable, le contenu de la liste de l'autre variable sera également modifié.
a = [1, 2, 3]
b = a
b[2] = 4
print(b) #[1, 2, 4]
print(a) #[1, 2, 4]
~~ Lorsque vous voulez passer par valeur ~~ Utilisez des tranches lorsque vous voulez faire une copie indépendante.
a = [1, 2, 3]
b = a[:]
b[2] = 4
print(b) #[1, 2, 4]
print(a) #[1, 2, 3]
Référence: https://qiita.com/hrs1985/items/4e7bba39a35056de4e73
Il est possible de modifier la valeur en fonction de l'objet. Un objet dont la valeur peut être modifiée est appelé mutable. Les objets dont les valeurs ne peuvent pas être modifiées après leur création sont appelés immuables.
https://docs.python.org/ja/3/reference/datamodel.html
Mutable: listes, dictionnaires, ensembles, etc. Immuable: nombres, chaînes, taples, etc.
Cela signifie que si vous essayez de modifier la valeur d'un objet immuable, un nouvel objet sera créé. Les objets mutables modifient la valeur des objets existants. Par conséquent, le comportement lors de la copie de variables est différent.
Exemple immuable
a=b=1
print(id(a)) # 140716556333904
a=2
print(id(a)) #140716556333936 ★ Un nouvel objet est créé
print(b) #1 ★ Les changements dans a n'affectent pas b
Exemple de mutable
a=b=['hoge']
print(id(a)) #2667037271944
a[0] = 'fuga'
print(id(a)) #2667037271944 ★ Les objets existants sont modifiés
print(b) #['fuga']★ Changements dans un affect b
backs = [i+1 for i in range(len(cards)) if cards[i] == -1]
print(backs)
Est le même que
backs=[]
for i in range(len(cards)):
if cards[i] == -1:
backs.append(i+1)
print(backs)
Référence: https://note.nkmk.me/python-list-comprehension/
Recommended Posts