Python List
Python 有一个内置的list类型。列表写做列表变量名+[]。Lists 与string的工作方式类似,使用len()
函数和[]
来访问数据,第一个元素的索引为0。
colors = ['red', 'blue' ,'green']
print(colors[0]) ## red
print(color[2]) ## green
print(len(colors) ##3
[图片上传失败...(image-97e4f9-1579105215035)]
通过 = 在lists间进行赋值,不会造成一个赋值,而是使得两个变量指向内存中的同一个list。
b = colors ## Does not copy the list
[图片上传失败...(image-ef77a0-1579105215035)]
一个空的list表示为在[]内,没有元素 e = [];
。
..+
作用于附加两个lists,因此[1,2]+[3,4]
得到 [1,2,3,4]
For and In
Python的"for" 和 “in" 是非常有用的,他们的主要使用就是配合Lists. 一个简单的遍历语句for var in list
是一种简单的方式来查看列表中的每一个元素(或者其他的集合)。但是不要再遍历中从列表中增添或者删除元素。
square = [1, 4, 9, 16]
sum = 0;
for num in squares:
sum += num
print(sum) ## 30
如果你知道列表中东西的顺序表使用,变量名再循环中抓取信息,比如 "num" or ”name" or "url"。由于Python代码没有其他的语法来来提醒类型,你的变量名是你的主要方式来直观的知道储存的变量类型。
In 通过自行构造是一个简单的方式去测试一个元素是否出啊先再一个列表里value in collection
测试是否一个值再集里,返回true/false
。
list = ['larry', 'curly', 'moe']
if 'curly' in list:
print 'yay'
for/in 构造非常常见的用于Python代码并且作用于除了list之外的数据结构,所以值得去记忆他们的语法。如果你来自其他语言,你可能有手动遍历一个集的习惯,而再Python里你应该只使用 for/in
你应该同样使用for/in来作用域一个字符串,这个字符串像一个字符的list一样工作,因此for ch in s: print ch
打印一个字符串内所有的所有的chars
。
Range
Range() 用于产生一列数字,range(n) 产生 0,1,....n-1 但是 range(a,b)返回 a,a+1,...,b-1 达到但是不包括最后一位数字。for-loop
和range的组合通过循环构建一个传统的数组。
## print the numbers from 0 through 99
for i in range(100):
print i
While 循环
Python 有一个标准的While循环,以及break
和continue
语句来向在C++和Java一样工作,来更改循环的过程(altering the course of the intermost loop)。In/for 循环解决了循环list内每个元素的一般情况。但是while循环可以让比完全控制索引号,这里有一个while循环,每隔三个索引读取一个元素
## Access every 3rd element in a list
i = 0
while i < len(a):
print a[i]
i = i + 3
List 方法 List method
这里有一些常见的List方法:
-
list.sppend(elem)
— 在list的为u添加单个元素,这个方法不会返回一个新的字符卫视,会修改原来的 -
list.insert(index,elem)
— 插入元素到一个给定的索引,把后面的索引向后移动 -
list.extend(list2)
把list2的元素添加到list的末尾,于使用+
和+=
到一个list的方式类似 -
list.index(elem)
—从头开始搜索一个list并且返回它的索引值,如果这个值不存在那么抛出一个ValueError
(你可以使用in
判断之后再读取避免Error
。 -
list.remove(elem)
— 找到第一个给定元素的实例然后删除它 (扔出一个 ValueError 如果不存在) -
list.sort()
—- 将list排序(不返回它) -
list.reverse()
— 反转一个list(不返回) -
list.pop(index)
—- 去掉并且返回再给定索引位置的元素,当index参数被省略list.pop()
返回最右边的元素
注意这些都是再list object里的方法,而len() 是一个函数将list作为参数
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']
上述的所有方法都不反悔改变的list,仅仅是修改原有的list。
list = [1, 2, 3]
print(list.append(4)) ##None
## Correct pattern
list.append(4)
print(list) ## [1,2,3,4]
List Build Up
一个常见的模式是创建一个空list然后用append()
和extend()
来为它添加元素:
list = [] ## Start as the empty list
list.append('a') ## Use append() to add elements
list.append('b')
List Slices
Slices 像作用域字符串一样作用域list, 并且可以被用于改变list的子部分
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']