python3 文字列内の変数展開
文字列内に変数の値を組み込みたいことってよくありますよね。
そんなときに使える方法4つをまとめます。
1.f-stringsを使う
name = "isato" age = 23 print(f"私は{name}です。{age}歳です。") # => 私はisatoです。23歳です。
2.str.format()を使う
name = "isato" age = 23 print("私は{0}です。{1}歳です。".format(name,age)) # => 私はisatoです。23歳です。
3.%演算子を使う
name = "isato" age = 23 print("私は%sです。%d歳です。" %(name,age)) # => 私はisatoです。23歳です。
4.+演算子を使う
name = "isato" age = 23 print("私は"+name+"です。"+str(age)+"歳です。") # => 私はisatoです。23歳です。
f-stringが使いやすくていいと思います!
他のやり方も覚えておいて損はないでしょう。
ウラムの螺旋の三次元拡張
YouTubeに公開しています。
ウラムの螺旋を三次元拡張してみた
通常版のウラムの螺旋では、正方形から次に大きい正方形を作るように軌跡を描いていきました。
この考えを拡張して、立方体から次に大きい立方体を作るように軌跡を描けば三次元拡張ができると考えました。
可視化にはplotlyというライブラリを用いました。
二次元版では直線が二次関数になっていました。じゃあ三次元版の直線は三次関数になってほしいですね。
動画の最後で確かめています。
三乗数しか調べていませんが、三次関数が直線で現れていることが確かめられました。
一方で気になる素数の分布は今のところよく分からないです...。
何かわかった方はぜひコメントください!
python 辞書型とタプル型を用いた2次元データ
タイトルを見られた方は、なんでそんなややこしいことするの?って思われたかもしれません。確かに用途によっては、他の作り方でも十分です。
タイトルのようにするメリットは、領域が確保されていないときでも要素を指定できることです。
詳しく説明します。
C言語とかだと最初に int list[10][10] のように領域を確保してから、list[2][5] = 7 のように要素にアクセスします。
しかしpythonは領域を動的に確保するので、このようには書けません。(numpyとかではできます)
では領域を動的に確保しながら要素を指定したいときはどうすればいいでしょう。
一つの答えとして以下のようにすれば良いです。(2, 5)という要素に7を格納したい場合は
data = {}
data[(2,5)] = 7
のようにします。
タプル(2,5)が整数7と紐づけられるため、2次元データとして扱うことが可能です。
numpy使えばよくね?って思われた方もいらっしゃると思います。
numpyは基本的には数値を格納して計算に使うものです。それに比べて、このやり方では要素は数値以外でも問題ありません。リストを格納してもいいし、辞書を格納してもいいわけです。また動的確保なので、無駄な領域を確保する必要がないという利点もあります。
そう言った意味では結構汎用性は高いと思っています。
もっといい方法があれば、ぜひ教えてください!
pythonのimportの書き方
pythonでの外部ファイルの読み込みについてまとめます。オブジェクト指向の醍醐味ですね。
・同階層
同じディレクトリ内に
module.py
main.py
があるとき、main.py内で以下のように書けばmodule.pyを読み込むことができます。
import module
使うとき : module.関数名等
または
from module import 関数名等
使うとき : 関数名等
関数名等としているのはクラス名でもいいからです。深い意味はありません。
・モジュールが下の階層
上の例のmodule.pyが、main.pyと同じ階層にあるfileというディレクトリにある場合
import file.module
使うとき : file.module.関数名等
のように書きます。
file.moduleが長いなと思ったら以下のように書き換えます。
import file.module as name
使うとき : name.関数名等
同階層の場合のfromを使うことも可能です。
上の階層にある場合は次の機会に書きますね^ ^
ウラムの螺旋について
この図をウラムの螺旋と言います。
ウラムという数学者が退屈な会議中に、数字を書いて遊んでいたところ偶然発見されたそうです。
ウラムの螺旋の書き方
このように1を真ん中にして螺旋を描いていきます。そして、素数に色をつけると最初の画像のようになります。
明らかに直線ができており、規則性があるように見えます。不思議です。
実はウラムの螺旋に直線を引くと、その直線上の数は二次関数で表現できます。(個人的にはこの事実も同じくらい驚き)
そしてなんと、ウラムの螺旋にはオイラーの素数生成多項式が含まれています!めちゃくちゃ面白いですね^ ^
オイラーさんも、もしかしたらこうやって見つけたのかも....
暇つぶしもバカにできないですね笑