【python】 numpyメモ
sqrt 平方根
import numpy as np np.sqrt([1,2,3]) # array([ 1. , 1.41421356, 1.73205081]) np.sqrt(2) # 1.4142135623730951
dot 内積
v1 = [1,2,3] v2 = [2,3,4] np.dot(v1,v2) #20
degrees radianを返す
np.degrees(3.14) #179.90874767107849 np.degrees(np.pi) #180 #np.piは円周率 (≒3.1415926)
power 累乗
np.power([1,2,3],2) #配列要素をそれぞれ2乗 #array([1, 4, 9])
正規表現 最短マッチ
最短マッチ
躓くことが多いのでメモ。
最短マッチを考える際には通常マッチから考えるとわかりやすい。
- 通常マッチは一番長いパターンをマッチ
- 最短マッチは一番短いパターンをマッチ
通常マッチは一番長いパターンと認識することが重要
例) テキスト例:「hoge」「hoge2」
ケース1 通常マッチケース /「.+」/ →この場合 「 と 」の範囲をマッチ。 テキスト例では「と」が一番長い範囲をマッチさせます。
ケース2 最短マッチケース /「.+?」/
→この場合 「 と 」のパターンの最短ケースを マッチさせます。 ポイントは量指定子(?や*)の前に? をつけることです。 (量指定子はなれるまであまり考えなくては良いかも)
hoge = "「hoge」「hoge」" puts hoge.scan(/「.+」/)[0] #→["「hoge」「hoge2」"] puts hoge.scan(/「.+?」/)[0] #["「hoge」"]
【rubyメモ】evalメソッド
evalとは
入力された文字列をrubyのコードとして解釈出来ます。 evalはKernel moduleに属しています。 kernel moduleはobjectクラスに属しているため、 全てのクラスで使用出来ます。
コード例
test = "aiueo" test2 = "test2" eval("puts test") #aiueo eval("puts 'test2") #test2
【ruby】yieldとブロックの関係
yield
メソッドの中でyieldを実行すると、受け取ったブロックを実行します。
コード例
ブロックとは method do |ブロック変数| ~ end で囲われている処理のことです。
yieldをわかりやすく明記するためにブロック変数を省略した形で書いてみました。
@count = 1 def yield_test puts @count # a @count += 1 yield # b puts @count # c end #ブロック yield_test do #yield_test実行 → a b cの順に実行される puts @count #b yieldからブロック処理実行 @count += 1 #c @countを1増やされる。 end #1,2,3と出力
yield処理を入れた際はブロック処理をmehodに追加することが出来ます。 追加処理を入れる際、便利な気がします。
ちなみにブロックが渡されたか判別するのは block_given? methodを用います。
@count = 1 def yield_test puts @count # a @count += 1 yield if bloc_given? # true→yield実行 今回はfalseなので実行されない puts @count # c end #ブロック yield_test #1,2と出力
CSS flexbox【日常 個人サービス製作日誌】
flexboxアイテム テキストが長いとはみ出てしまう
例)
<div class = "flex"> <div class="problem">hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge</div> <div class="normal">hoge </div> </div>
.flex { display: flexbox; width: 100px } .problem { flex-grow: 1; } .normal { flex-grow: 4; }
フレックボックス幅が100pxとして、2つのフレックスアイテムがある場合を想定します。 それぞれのアイテムの長さ比率は1:4の幅で分割しています(flex-growプロパティ使用)。 テキストが長い場合、はみ出て表示されてしまう。(今回のケースだと .problemは20px幅)
ぐぐっていたら解決方法があった。 こちら