パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
jinoseさんの投稿
(投稿ID: 5534)
小川 慶一さんのコメント
(コメントID: 8335)
jinoseさんのコメント
(コメントID: 8388)
(コメントID: 8397)
another_set = {6, 7, 8, 9, 10, 1, 2, 3, 4, 5, } print(another_set)
(コメントID: 8532)
AIユーザさんのコメント
(コメントID: 8533)
(コメントID: 8534)
(コメントID: 8535)
(コメントID: 8536)
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2025年01月13日 07:25
2024年12月28日 17:20
2024年12月28日 08:43
2024年12月24日 07:22
2024年12月23日 21:50
2025年01月14日 07:53
2024年12月28日 20:12
2024年12月28日 19:32
2024年12月28日 14:24
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2024年12月19日 11:30
2024年12月18日 13:30
2024年10月21日 17:30
2024年10月18日 17:00
2024年10月17日 17:30
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2024年11月15日 16:41
2024年11月15日 13:07
jinoseさんの投稿
(投稿ID: 5534)
忙しくても、1日に少しでもコードを書かないと脳がむずかゆい、という感覚になってきました。
小川 慶一さんのコメント
(コメントID: 8335)
jinoseさんのコメント
(コメントID: 8388)
for分の中で、セットの要素に数値を使うと順番は破壊されないのでしょうか?5回行っても数値はセットの順番で出力されました。
my_set={1,2,3,4,5,6,7,8,9,10}
print(my_set)
Consoleの出力結果
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
for i in my_set:
print(i)
Consoleの出力結果
1
2
3
4
5
6
6
7
8
9
10
文字列だとちゃんと(?)順番はバラバラになりました。
my_set_2={"1月","2月","3月","4月","5月","6月"}
print(my_set_2)
Consoleの出力結果
{'1月', '3月', '5月', '6月', '2月', '4月'}
Consoleの出力結果
for c in my_set_2:
print(c)
1月
3月
5月
6月
2月
4月
小川 慶一さんのコメント
(コメントID: 8397)
その実験だけでその結論を導くのは安易です。
たとえば以下を試してみてください。
Consoleの出力結果
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
jinoseさんのコメント
(コメントID: 8532)
以下の場合、setは100回試行しても、昇順で表示されました。
my_set = set()
for i in range(0,100):
my_set.add(i)
print(my_set)
{0,1,2,・・・,99}
そこで、ChatGPTに聞いたところ、
###
set の要素が 昇順のように見える場合がある理由 は、Python の set が ハッシュテーブル を使用しているためです。ただし、以下のポイントを理解すると挙動が明確になります:
set は順序を保証しない
Python の set は要素の順序を保証しません。
内部的にはハッシュテーブルを使用して要素を管理しており、ハッシュ値に基づいて効率よく要素を追加・削除します。
そのため、要素の順序はハッシュ値によって決まります。
なぜ昇順に見えるのか?
場合によっては、set 内のハッシュ値が昇順に似た順序を作り出すことがあります。
特に小さな整数を含む場合、Python のハッシュ値がその整数の値そのものに近いため、結果的に昇順に見えることがあります。
###
との回答。
ハッシュテーブルが何なのかは分からないが、とりあえず「小さな整数を含む場合、昇順に見える」とのことは判明。
そこで、値を以下にして試行したところ、
my_set = set()
for i in range(1000,1100):
my_set.add(i)
print(my_set)
{1024, 1025,・・・,1022, 1023}
と、順番が破壊されて表示されました。
更に、エクセルのpivotテーブルでdataを更新した際、たまに昇順で表示されない時があるのと何か関係があるのかもしれないと思いました(ここではこれ以上深掘りはしませんが)。
予想する→試行→予想と異なる結果→別の試行→想定した結果→実験が上手く言った感動!を味わえました!
AIユーザさんのコメント
(コメントID: 8533)
実験を通じて新たな発見をされ、またそのプロセスを楽しんでいる様子が伝わってきますね!Pythonの`set`は順序を保証しないデータ構造ですが、特定の条件下で昇順に見えることがあるという理解が深まったようで良かったです。
`set`の内部構造として使われるハッシュテーブルは、要素の順序を保証しないため、要素を追加する順序とは異なる順序で要素が並ぶことがあります。特に、小さな整数の場合には、ハッシュ値がその整数の値に近いため、結果的に昇順に見えることがあるという説明は正しいです。
エクセルのピボットテーブルの挙動との関連について触れられていますが、ピボットテーブルはデータの集計や整理のための機能であり、データのソートや表示に関しては異なるアルゴリズムが使われています。したがって、`set`の順序とは直接の関係はありませんが、データの順序に関する関心が高まったことは良いことです。
これからも予想と実験を繰り返し、プログラミングやデータ構造についての理解を深めていってください。何か新しい発見があれば、ぜひシェアしてくださいね!
小川 慶一さんのコメント
(コメントID: 8534)
リアルの世界でも、たとえば...そうですね。お米の袋を倉庫から出して店舗の棚に陳列する仕事があるとしたら、「順序はどうでもいいから」と言われても、やはり、棚のはじっこから並べていきますよね。
一方で、取り出すときには、やはり棚のはじっこから取り出していく。結果として、「順序を保証しない」けど、「取り出すときは、値を入れたときの順番どおりに取り出せた」というようなことになります。(「取り出すときには絶対に順序が入れ替わる」とは言っていない)
と、この説明でいかがでしょうか。
jinoseさんのコメント
(コメントID: 8535)
た、確かに・・・!「順番は破壊される」という思い込みがありました。
>リアルの世界でも、・・・(「取り出すときには絶対に順序が入れ替わる」とは言っていない)
こちらについても、とてもわかり易い例を頂き、凄く納得できました。。。
ありがとうございました!!!
AIユーザさんのコメント
(コメントID: 8536)
納得していただけて嬉しいです!プログラミングやデータ構造の理解は、時にはリアルな世界の例えを使うことでぐっと深まることがあります。これからも疑問に思ったことをどんどん試して、学びを楽しんでください。また何か質問や気になることがあれば、いつでも聞いてくださいね。頑張ってください!