国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

[python01]python列表,元組對比Erlang的區(qū)別總結

2019-11-14 17:29:35
字體:
來源:轉載
供稿:網(wǎng)友
數(shù)據(jù)結構是通過某種方式組織在一起的數(shù)據(jù)元素的集合,這些數(shù)據(jù)元素可以是數(shù)字,字符,甚至可以是其他的數(shù)據(jù)結構。
python最基本的數(shù)據(jù)結構是sequence(序列):6種內建的序列:列表,元組,字符串,Unicode字符串,buffer對象和xrange對象。
 
對比歸納:列表,元組在Erlang與python中的區(qū)別:
 
1. 通用操作:
Python的列表更像是C中的數(shù)組,但是比那更靈活,和Erlang的列表大有不同。
1.1 python列表索引從0開始并可以是負數(shù)。可以使用
>>>num=[0,1,2,3,4]>>>num[1]1>>>num[-1]4
Erlang只能的大部分操作都要使用lists里面的函數(shù)來進行,且索引是從1開始,且不能為負數(shù)
>Num=[0,1,2,3,4].>lists:nth(Num,2).

1.2 python可以分片:使用索引可以訪問單個元素,使用分片可以訪問一定范圍內的元素:

>>>tag='<a >google web site</a>'>>> tag[9:30] 'http://www.google.com'>>> tag[32:-4]'google web site'
分片操作需要提供兩個索引作為邊界,第一個索引的元素什么包含在分片內中,第二個索引元素不包含在分片中。
想取最后幾個元素還可以更簡潔一些:
>>> tag[-20:-4]'>google web site'
    1.2.1 還可以設置步長:(步長默認為1)
>>> num[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> num[0:11:2][0, 2, 4, 6, 8, 10]
    1.2.2 取得列表中所有元素的方法:3個元素都不填
>>> num[:][0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Erlang并沒有直接的函數(shù)來進行分片(取得子列表):也沒有步長的概念。
 
1.3  python可以序列相加:
 1.3.1 直接使用+,這不支改變原列表的值。
>>> num+[1,2,3][0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3]
 1.3.2可以使用expand函數(shù),此函數(shù)不會返回最新的列表,只會修改原列表的值。
>>> num.extend([1,2,3])>>> num[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3]
Erlang類似操作:
使用++或lists:append/2
> [1,2,3]++[4,5,6].[1,2,3,4,5,6]> lists:append([1,2,3],[4,5,6]).[1,2,3,4,5,6]
1.4 python可以使用*n 來生成多一們新的序列,并在新序列中,原來的序列會被重復n次
>>> [1]*4[1, 1, 1, 1]

空列表可以使用[]來表示,

None是python的一個內建值,代表空值,意味著里面沒有放置任何元素,如果你想初始化一個長度為10的列表,可以:
>>> [None]*10[None, None, None, None, None, None, None, None, None, None]
Erlang中*只是一個普通的數(shù)學運算符
> lists:duplicate(4,1). [1,1,1,1]
Erlang空列表也是用[]來表示,但并沒有類似于None的變量存在(因為它不需要)
 
1.5 python為檢查一個值是否在序列中,可以使用in運算符
in檢查某個條件是不是為真,如果真返回True,假就返回False,這叫布爾運算符
>>> num[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3]>>> 1 in numTrue>>> 100 in numFalse>>> [1,2] in num False>>> "aaa" in "aaatest"True
可以看出python中的列表和字符串不是同一種類型,但可以通過list函數(shù)把字符串轉化為列表
>>> list("test")['t', 'e', 's', 't']>>> list("test")=="test"False 
Erlang中字符串也是一種列表,且沒有布爾運算符,且true,false本質只是一個普通的原子,可以使用lists函數(shù)判斷真假
> lists:member(21,[21,2,3,41,1]).true> lists:member(22,[21,2,3,41,1]).false

 

1.6 python的len,max,min對應Erlang的length,max,min,都非常有用
 
 
2. 列表操作:
因為Elrang的變量不可變化,大部分常用操作都封裝在lists模塊中。
而python變量可變,故有一些基本的內建操作:
2.1 改變列表,元素賦值:
>>> num[1, 2, 3]>>> num[2]=100>>> num[1, 2, 100]
不能為一個位置不存在的元素賦值:
>>> num[100]Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: list index out of range 
2.2 刪除元素:
>>> num[1, 2, 100]>>> del num[2]>>> num[1, 2]>>> del num[10]Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: list assignment index out of range
2.3 分片賦值:這是個非常強大的功能
>>> name=list("test")>>> name['t', 'e', 's', 't']>>> name[2:]=['c','h']>>> name['t', 'e', 'c', 'h']>>> name[2:]=['c','h','e','r']>>> name['t', 'e', 'c', 'h', 'e', 'r']
如果把索引都填一樣的值,就變成了插入:
>>> name[1:1]=['t','e','s','t']>>> name['t', 't', 'e', 's', 't', 'e', 'c', 'h', 'e', 'r']
還可以變成刪除哦:
>>> name[1:4]=[]>>> name['t', 't', 'e', 'c', 'h', 'e', 'r']>>> name[1:4]=[]>>> name['t', 'h', 'e', 'r']
列表方法:python的調用方式是 :
對象.方法(參數(shù))
 
列表中幾個常用的基本方法有:
append在列表尾追加新的對象
count統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)
extend可以在列表尾一次性追加另一個序列的多個值
index從列表中找出某一個值第一匹配項的索引位置
insert用于將對象插入到列表中
pop移除列表中的一個元素(默認為最后一個)并返回該元素的值:它是唯一一個既能修改列表又返回元素值(其它的都是None)的列表方法
remove移除列表中某個值的第一個匹配項
reverse把列表中的元素反向存放
sort排序,可以自定義排序函數(shù)
 

 
相比而言:python的元組和erlang的元組更像,但略有不同:
 
python的元組與列表唯一的不同就是:元組不可修改。
基本語法:
>>> 1,2,3(1, 2, 3)
構建一個元素的元組
>>> (1,)(1,)>>> (1)1
與list函數(shù)對應可以使用tuple函數(shù)來把列表轉化為元組:
>>> tuple([1,2,3])(1, 2, 3)

 整理過程中感覺到一股強烈的高級語言對Erlang的壓制性力量,怎么辦。。。。。。


小美眉察覺到自己的眉毛能自由動,樂開花了!

 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永安市| 湖口县| 眉山市| 宜良县| 新余市| 玛沁县| 宁明县| 宣汉县| 碌曲县| 洱源县| 景谷| 临安市| 桂阳县| 龙里县| 武平县| 嵊州市| 土默特右旗| 沐川县| 商丘市| 南康市| 高陵县| 菏泽市| 阳高县| 子洲县| 光山县| 白河县| 鄂尔多斯市| 青岛市| 岳池县| 张掖市| 盘锦市| 启东市| 和平县| 徐闻县| 宜州市| 泗水县| 朝阳市| 景德镇市| 洱源县| 英吉沙县| 虎林市|