Python course之Python Lists
中国hadoop大数据峰会2016北京站3月18-19日在北京即将召开,现在购买门票优惠多多!!!机不可失,快快动起来!报名可以点击阅读原文
原文链接:https://developers.google.com/edu/python/lists
文章来自:Google Class
本文由chinahadoop.com翻译
关于转载授授权
China Hadoop文章,欢迎个人转发朋友圈,自媒体、媒体、机构转载务必申请授权,后台留言“机构名称+文章标题+转载”,申请过授权的不必再次申请,只要按约定转载即可,但文末需放置China Hadoop二维码。
配套视频链接:https://www.youtube.com/watch?v=EPYupizJYQI
Python有一个叫作“list”的内置列表类型。清单文字被写入方括号[]内。Lists和strings一样通过index0中的第一个元素来使用Len()函数和方括号[]访问数据,(参见官方文件python.orglist文档)【http://docs.python.org/tut/node7.html】。
colors = [‘red’, ‘blue’, ‘green’]
print colors[0] ## red
print colors[2] ## green
print len(colors) ## 3
Assignment with an = on lists does not make a copy。相反,分配使得两个变量指向存储器中的一个列表。
b = colors ## Does not copy the list
“empty list”只是一对空的方括号[]。’+’的作用是追加两个列表,那么[1,2] + [3,4]就得出[1,2,3,4](这就像strings中的+)。
FOR和IN
Python中的*for *结构和*in*结构是非常有用的,并且我们将看到第一次使用它们就是与lists一块。对于*for*结构 – for var in list –就是一种查看列表中(或其他集合)的每一个元素的简单方法。在循环期间不要向列表中添加或者删除。
squares =[1, 4, 9, 16]
sum = 0
for num insquares:
sum += num
print sum ## 30
如果你知道在列表中是什么样的事情,那就在循环中使用一个变量名来获取像"num", "name"或 "url"这样的信息。由于Python代码没有其他的语法来让你想起类型,那么你的变量名就是你保证正在发生的事情正常进行的关键途径。
如果一个元素出现在列表(或其他集合)中,那么*in*结构自身来测试是一个简单的方法- value in collection –若测试值在集合中,返回真/假。
list = [‘larry’, ‘curly’, ‘moe’]
if'curly'in list:
print'yay'
for/in结构在Python代码中非常常用并且除了list他们还应在在别的数据类型,因此要记住他们的语法。
该用于/内建在Python代码非常常用且较上列出了其他数据类型的工作,所以应该只记住自己的语法。你可能有别的语言的启动循环的习惯,但是在Python中,你应该只使用for/in。
你也可以在string中使用for/in。String就像它自己字符的一个列表,所以for ch in s:print ch打印了string中的所有字符
Range
range(n)函数得到数字0, 1, … n-1;range(a, b)返回a, a+1, … b-1(直到但是并不包括最后一个数)。for循环和range()函数的组合可以让你建立起一个传统的数字循环:
## print the numbers from 0 through 99
for i inrange(100):
print i
有一种变种的xrange()能避免构建性能敏感案件整个列表的成本(在Python 3000,range()有更好的表现,你可以放弃xrange())。
While Loop
就像C++和Java一样,Python也有标准的while循环,*break*和*continue*语句来改变最内层循环的过程。上面的for/in循环能解决每一个元素遍历列表中的常见情况,但while循环使你能够总控index numbers。这里有一个访问列表中every 3rd element 的while循环:
## Access every 3rd element in a list
i = 0
while i < len(a):
print a[i]
i = i + 3
List Methods
下面是一些其他常见的list methods。
· list.append(elem) – 添加单个元素到列表的末尾。常见错误:只修改原始列表,不返回新的列表。
· list.insert(index, elem) – 在索引中插入元件,并把元件移到右边。
· list.extend(list2)在列表的末尾向list2中添加元素。使用列表上的+或+ =类似于使用extend()。
· list.index(elem) -从列表的起始搜索给定的元件,并返回它的索引。如果元素未出现就会出现ValueError(用“in”来检查没有ValueError)。
· list.remove(elem) – 搜索给定元素的第一个实例,并删除它(如果不存在就会出现ValueError)
· list.sort() – 在当前位置排列列表(不要返回)。(下面显示的sorted()函数是优选的。)
· list.reverse() – 在当前位置倒转列表(不要返回)
· list.pop(index) -在给定索引处删除并返回元素。如果索引被省略则返回最右边的元件(roughly the opposite of append())。
请注意,这些都是一个列表对象的*methods*,而len()是一个把列表(或字符串或其他)作为参数的函数。
list = [‘larry’, ‘curly’, ‘moe’]
list.append('shemp') ## append elem at end
list.insert(0, 'xxx') ## insert elem at index 0
list.extend([‘yyy’, ‘zzz’]) ## add list of elems at end
print list ## [‘xxx’, ‘larry’, ‘curly’, ‘moe’,’shemp’, ‘yyy’, ‘zzz’]
print list.index('curly') ##2
list.remove('curly') ## search and remove that element
list.pop(1) ## removes and returns 'larry'
print list ## [‘xxx’, ‘moe’, ‘shemp’, ‘yyy’, ‘zzz’]
常见错误:要注意上述方法不*return*修改后的名单,他们只是修改原来的列表。
list = [1, 2, 3]
print list.append(4) ## NO, does not work, append() returnsNone
## Correct pattern:
list.append(4)
print list ## [1, 2, 3, 4]
List Build Up
一个常见的模式是启动列表的空列表[],然后用append() 或extend() t将元素添加到它里面:
list = [] ##Start as the empty list
list.append('a') ## Use append()to add elements
list.append('b')
List Slices
Slices work on lists just as with strings,也可以用于改变列表的子部分。
list = [‘a’, ‘b’, ‘c’, ‘d’]
print list[1:-1] ## [‘b’, ‘c’]
list[0:2] =’z’ ##replace [‘a’, ‘b’] with [‘z’]
print list ## [‘z’, ‘c’,’d’]
练习:list1.py
练习在本节中的学习,可以在list1.py中尝试(基本练习)【https://developers.google.com/edu/python/exercises/basic】。
本节完
对文章有疑问或者任何意见欢迎留言
China Hadoop大数据研究网:
http://chinahadoop.com/
中国hadoop技术峰会2016北京站报名参会网站:
http://www.chinahadoop.com/signup.php(也可点击阅读原文来了解详情)
门票价格表
微信名:
HadoopSummit
微信ID:
hadoopinchina
中国Hadoop技术峰会是亚太地区举办最早、规模最大、影响力最广阔的大数据盛会。
Chinahadoop.com是China Hadoop Summit的内容网站。
HadoopSummit是Chinahadoop.com的微信发布平台。