2022年
4月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2022-04-11 Rとjuliaとrubyとpython

_ 配列

4つの言語の比較の第五弾として,配列の取り扱いについて,表にまとめてみた.言語によって,ベクトルとかリストとか呼び方が違う場合もあります.集合の取り扱いも含まれています.
Rjuliarubypython3
定義 a<-c(1,2,4,8,4) a=[1,2,4,8,4] a=[1,2,4,8,4] a=[1,2,4,8,4]
連続 b<-1:10 b=Vector(1:10) b=[*1..10] b=list(range(1,11))
等差数列 b<-seq(1,20,2) b=Vector(1:2:20) b=[*(1..20).step(2)] b=list(range(1,21,2))
内包表記 [i^2 for i in 1:5] [i**2 for i in range(1,6)]
map sapply(1:10,function(x){2*x}) map(x->2x,1:10) [*1..10].map{|x|2*x} list(map(lambda x:2*x,range(1,11)))
最初 a[1]
head(a,1)
a[1]
a[begin]
first(a)
a[0]
a.first
a[0]
要素 a[2] a[2] a[1] a[1]
最後 tail(a,1) a[end]
last(a)
a[-1]
a.last
a[-1]
最後から tail(a,2)[1] a[end-1] a[-2] a[-2]
範囲 a[1:3] a[1:3] a[0..2]
a[0,3]
a[0:3]
追加 a<-append(a,3)
a<-c(a,3)
push!(a,3) a.push(3)
a<<3
a.append(3)
取出 a<-head(a,-1) pop!(a) a.pop a.pop()
挿入 a<-append(a,9,2) insert!(a,3,9) a.insert(2,9) a.insert(2,9)
削除 a<-a[-3] deleteat!(a,3) a.delete_at(2) a.pop(2)
長さ length(a) length(a) a.length
a.size
len(a)
逆順 rev(a) reverse(a) a.reverse list(reversed(a))
上書き逆順 a<-rev(a) reverse!(a) a.reverse! a.reverse()
重複除去 unique(a) unique(a) a.uniq set(a)
ソート sort(a) sort(a) a.sort sorted(a)
上書きソート a<-sort(a) sort!(a) a.sort! a.sort()
結合 c(a,b) vcat(a,b) a+b a+b
含有 2%in%a 2∈a
a∋2
a.include?(2) 2 in a
部分集合 all(a%in%b) a⊆b
b⊇a
require 'set'
Set[*a]<=Set[*b]
Set[*b]>=Set[*a]
Set[*a].subset?(Set[*b])
Set[*b].supset?(Set[*a])
set(a)<=set(b)
set(b)>=set(a)
set(a).issubset(b)
set(b).issuperset(a)
積集合 intersect(a,b) a∩b a&b set(a)&set(b)
和集合 union(a,b) a∪b a|b set(a)|set(b)
差集合 setdiff(a,b) setdiff(a,b) a-b set(a)-set(b)
対称差集合 symdiff(a,b) require 'set'
Set[*a]^Set[*b]
set(a)^set(b)
最大 max(a) maximum(a) a.max max(a)
最小 min(a) minimum(a) a.min min(a)
総和 sum(a) sum(a) a.sum sum(a)
Rとjuliaはindexが1から始まることに気をつけないといけない.Rとrubyには内包表記は無い。pythonはlistをつけないといけない場合がある.どれが使いやすいかは甲乙つけがたし,というかこちらを立てればあちらが立たずという感じかな.Rも慣れると使いやすい気がする.