Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Python - posunuté hodnoty v setu

Ahoj,

Náhodou jsem narazil na nějakou chybu, kdy jsou v setu po vygenerování posunuté hodnoty - viz níže. Kde je chyba?


print([x for x in range(1,4)])  # [1, 2, 3]
print({x for x in range(1,4)})  # {1, 2, 3}

print([x for x in range(1,5)])  # [1, 2, 3, 4]
print({x for x in range(1,5)})  # {1, 2, 3, 4}

print([x for x in range(1,6)])  # [1, 2, 3, 4, 5]
print({x for x in range(1,6)})  # {1, 2, 3, 4, 5}

print("---")

print([2*x for x in range(1,4)])  # [2, 4, 6]
print({2*x for x in range(1,4)})  # {2, 4, 6}

print([2*x for x in range(1,5)])  # [2, 4, 6, 8]
print({2*x for x in range(1,5)})  # {8, 2, 4, 6} - ???

print([2*x for x in range(1,6)])  # [2, 4, 6, 8, 10]
print({2*x for x in range(1,6)})  # {2, 4, 6, 8, 10}

print("---")

print([3*x for x in range(1,4)])  # [3, 6, 9]
print({3*x for x in range(1,4)})  # {9, 3, 6} - ???

print([3*x for x in range(1,5)])  # [3, 6, 9, 12]
print({3*x for x in range(1,5)})  # {9, 3, 12, 6} - ???

print([3*x for x in range(1,6)])  # [3, 6, 9, 12, 15]
print({3*x for x in range(1,6)})  # {3, 6, 9, 12, 15}

Díky.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
S pythonem teprve začínám, takže si zkouším různé věci. Narazil jsem právě na jeden příklad, kdy se…
Phpp 20.03.2020 01:02
Phpp
To není posunuté, ale neuspořádané :) Ještě objevíš věcí, třeba print (0.1 + 0.1) print (0.1 + 0.1…
karel 20.03.2020 01:19
karel
Hustý! Je pro to nějaké jednoduché vysvětlení, proč ten prostřední není 0.3? :)
Phpp 20.03.2020 02:47
Phpp
Tady je o tom taky nějaké povídání.
karel 20.03.2020 10:12
karel
Zajímavé, díky oběma za odpovědi. :) poslední
Phpp 20.03.2020 13:05
Phpp

S pythonem teprve začínám, takže si zkouším různé věci. Narazil jsem právě na jeden příklad, kdy se to vypsalo posunuté o jeden item a já netuším, proč se to tak děje, tak jsem to zkusil ještě s pár hodnotama a zaujalo mě, že se to někdy vypíše postupně a někdy posunutě.
To právě nechápu - proč se to děje jen někdy?

print({2*x for x in range(1,4)}) # {2, 4, 6} - ok!
print({2*x for x in range(1,5)}) # {8, 2, 4, 6} - posunuté!
print({2*x for x in range(1,6)}) # {2, 4, 6, 8, 10} - ok!

Díky.

Zpět do poradny Odpovědět na původní otázku Nahoru