歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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的不定參數是用元組實現的。

無需操作系統直接運行 Python 代碼  http://www.linuxidc.com/Linux/2015-05/117357.htm

CentOS上源碼安裝Python3.4  http://www.linuxidc.com/Linux/2015-01/111870.htm

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm

Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved