ruby和Python簡單對比

前不久學了ruby,發現ruby和Python很是像,因而自個測試對比了下,測完了才知道網上有現成的……下面是測試結果
 
序列(包括列表和元組等)有分片的特色:可能會比較方便的提取其中特定元素,暫時感受沒什麼用:注意是用:分開兩個數字。負號表示倒數第幾個
留空表示開頭或者結尾,python中的分片能夠等距分割,格式是兩個冒號
ruby則是[4...7]這樣用兩個或者三個句號分片,也能夠用[1,2]這種逗號
不一樣的是,ruby彷佛不能等距分割,並且ruby逗號方式下兩個參數的意義是第一個是起始元素序列號,第二個參數是長度,而python中的兩個參數表示第一個是起始元素序列號,第二個是下一段起始元素序列號,與ruby中的...相同
相似於ruby中的puts「hello world」*4
python 中也有 print 「hello world」*4
固然python中還有[42]*10,好吧ruby也有
序列相加均使用簡單的+
python使用len(),ruby使用.length
python使用in檢查一個字符是否在字符串中,ruby使用include?並且都可以用於檢查列表/數組,均可以檢查一個序列是否在一個序列的序列中
python 使用min()、max(),Ruby 使用 .min .max,可是ruby.min .max後面能夠接一小段含參代碼以對最小值、最大值、第二小值、第二大值等進行一些簡單的處理。
python中的字符串不能直接被修改 每每用list函數轉換成列表後修改
Ruby中的字符串能夠直接的被修改,並且替換元素沒必要與被替換元素等長,猜測ruby中的字符串就是以列表方式存儲的
python中刪除列表元素使用del list[] ruby 使用.delete
python 刪除方式能夠有刪除特定[2],也能夠刪除一段[2:3],ruby 能夠刪除具備特定內容的元素,如:delete 「word」,成功返回元素,失敗返回nil,會直接的改變列表,ruby刪除指定序列號元素彷佛沒有直接的方法,能夠用list。delete list【2】                                        
ruby也能夠簡單的使用-號刪除,可是要用[]括起來並且刪除不會實質改變數組,而是返回元素被刪除後的列表
python 打印控制檯只用print ,ruby有print、puts、p#爲閱讀美觀仍是敲個tab吧……
python:          ruby:
.append()           <<     .push
.count()             .count()
.extend()           .concat 
.index()               .index
.insert()              .insert
.pop()                 .pop
.remove()            .delete/.delete_if{|blocks| block}
.reverse()            .reverse
.sort()                 .sort
 python的排序有key = len這種能夠按特定的方式排序的方式,有sort(method) 這樣的特定排序.
Ruby的排序則是使用{|a,b| block}這樣特定的排序
python 用「%s is it」% string
ruby 用 「#{ string}"
python 使用input()和raw_input()
ruby使用gets 和 gets.chomp
python 有.find() 返回子串所在位置最左端索引//和index不一樣的地方在於它能夠指定起始點和結束點
ruby使用。index
python使用.join() ruby .join 效果均爲鏈接數組
python使用。lower() ruby使用。downcase
相似的有:
.capitalize()    .capitalize
.upper()          .upcase
.swapcase()    .swapcase
.strip()            .strip
.lstrip()           .lstrip
.rstrip()           .rstrip
python用import ruby 用require
python和ruby的次冪符號** 都是右結合方式都支持序列解包(多重賦值)
python的if while def後面都得有個:ruby不用,可是ruby在結尾都得有個end
python的elif = ruby的elsif
python有== is Ruby有== <=>//is是‘同一性運算符’
兩者都有斷言assert
python使用for keys in dict 遍歷字典中的元素 ruby使用。each{|k,v| block}遍歷
python的exec能夠執行一段字符串
ruby是eval//python的eval是能夠把字符串當成表達式求值
ruby和python均支持鏈式賦值:x=y=value
 
 
 
不一樣的是:
python有。title ruby沒有
python有。islower() 。istitle() 。isupper()
python使用replace方法獲得被替換後的字符串:ruby能夠直接替換
都有split 格式是split() 和 .split 
python 有.translate() maketrans() ruby 沒有
python 支持函數多重嵌套,函數名做爲變量返回,能夠被調用
ruby也支持多重嵌套,可是返回函數名字符串,不能夠被調用
 
 
python 有字典和hash
ruby沒有字典,ruby 只有hash
 
python的方法和ruby的方法都是按位置穿參數,不過python能夠指定參數名傳參(關鍵字參數),此時不依賴於位置。
 
python和ruby都支持不定參數,python前面加*,ruby前面能夠加*
python的不定參數是用元組實現的。
相關文章
相關標籤/搜索