Python 中的List
Python 中的 List 和 Java 很相似,不同之處在于聲明
>>> classmates = ['Micael', 'Bob', 'Tracy']
>>> classmates
['Micael', 'Bob', 'Tracy']
變量classmates就是一個(gè)list。用len()函數(shù)可以獲得list元素的個(gè)數(shù):
>>> len(classmates)
3
和 Java 相同,Python 中訪問某個(gè)位置的元素挠锥,也是通過索引罗珍,索引的值也是從 0 開始;不同之處是柴我,Python訪問某個(gè)元素不是通過 get() 方法,而是和 Java 中的數(shù)組一樣扩然,采用 [index]
的形式艘儒。此外訪問最后一個(gè)元素除了通過計(jì)算索引位置外,還可以用 -1 來做索引夫偶,直接獲取最后一個(gè)元素界睁。
Java:“Python 你牛逼!”
Python:“這不算什么兵拢,牛逼的還在后面呢翻斟!”
在Python中,不但可以通過 -1 做索引訪問最后一個(gè)元素说铃,以此類推访惜,可以通過 -2嘹履,-3,......獲取倒數(shù)第2個(gè)债热、倒數(shù)第3個(gè)......
>>> classmates[2]
'Tracy'
>>> classmates[-1]
'Tracy'
>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
Python: “怎么樣砾嫉?服了吧”
Java:“切.......’”
在 Python 中更過分的是,list里面的元素的數(shù)據(jù)類型也可以不同
>>> L = ['Apple', 123, True]
list元素還可以是另一個(gè)list窒篱,比如:
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
要拿到'php'可以寫s[2][1]焕刮,因此s可以看成是一個(gè)二維數(shù)組,類似的還有三維墙杯、四維……數(shù)組配并,不過很少用到。
Java:“高镐?溉旋??嫉髓?”
List 的其他操作
Java | Python | 作用 |
---|---|---|
list.add(value) | list.append(value) | 追加元素到末尾 |
list.add(index,value) | list.insert(index, value) | 把元素插入到指定的位置 |
list.remove(lastIndex) | list.pop() | 刪除list末尾的元素 |
list.remove(index) | list.pop(index) | 刪除指定位置的元素 |
Python 中 tuple
tuple(元組):是一種有序列表观腊。tuple 和 list 非常類似,但是tuple一旦初始化就不能修改(tuple所謂的“不變”是說岩喷,tuple的每個(gè)元素恕沫,指向永遠(yuǎn)不變),這跟 Java 中用 final 修飾的是一樣的效果纱意。
>>> t = (1, 2)
>>> t
(1, 2)
如果要定義一個(gè)空的tuple婶溯,可以寫成():
>>> t = ()
>>> t
()
但是,要定義一個(gè)只有1個(gè)元素的tuple偷霉,如果你這么定義:
>>> t = (1)
>>> t
1
定義的不是tuple迄委,是1這個(gè)數(shù)!這是因?yàn)槔ㄌ?hào)()既可以表示tuple类少,又可以表示數(shù)學(xué)公式中的小括號(hào)叙身,這就產(chǎn)生了歧義,因此硫狞,Python規(guī)定信轿,這種情況下,按小括號(hào)進(jìn)行計(jì)算残吩,計(jì)算結(jié)果自然是1财忽。
所以,只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號(hào),
來消除歧義泣侮,Python在顯示只有1個(gè)元素的tuple時(shí)即彪,也會(huì)加一個(gè)逗號(hào) ,
以免你誤解成數(shù)學(xué)計(jì)算意義上的括號(hào)。
>>> t = (1,)
>>> t
(1,)
Java :“真啰嗦活尊,看我一個(gè) final 就搞定了 ”
Python:“這次你贏了隶校!”