cheng029 发表于 2016-3-7 08:53:30

python 列表特点及常用操作

一、列表的特性
1、有序的集合
2、通过偏移来索引,从而读取数据
3、支持嵌套
4、可变的类型

列表支持的方法

1
2
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> a=
>>> a[-1]
3
>>> b=[,] #列表可以嵌套
>>> b

>>> b
4
>>> b=10 #原地修改列表
>>> b
[, 10]
>>> id(b)
46944392836376
>>> b=5
>>> b

>>> id(b)
46944392836376





二、列表的常用操作
1、切片:正向索引、反向索引、默认索引

1
2
3
4
5
6
7
8
9
10
11
12
a =
>>> a =
>>> a

>>> a

>>> a[-1:-4:-1]

>>> a

>>> a







2、添加操作:
+: 生成一个新的列表
Extend接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表
Append :添加任意对象到列表的末端
Insert: 插入任意对象到列表中,可以控制插入位置。



1
2
3
4
5
>>> a =
>>> b=
>>> c=a+b
>>> print c #产生一个新的列表






1
2
3
4
5
6
7
>>> id(a)
46944392835016
>>> a.extend(b)#原地修改列表
>>> print a

>>> id(a)
46944392835016





1
2
3
4
5
6
7
>>> a=
>>> a.append(4) #添加任意对象到列表的末段
>>> print a

>>> a.insert(1,'ab')
>>> print a






3、修改,修改列表本身只需要直接赋值操作就行。

1
2
3
4
>>> A =
>>> A='python'
>>> print A
['python', 2, 3]






4、删除操作:
Del :我们通过索引删除指定位置的元素。
Remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。
Pop:返回最后一个元素,并从list中删除它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> a
['python', 'ab', 2, 3, 4]
>>>
>>> del a
>>> a
['ab', 2, 3, 4]
>>> a.remove(2)#删除的是给定的value
>>> a
['ab', 3, 4]
>>> a.remove(2) #如果没找到的话,会抛异常。
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: list.remove(x): x not in list
>>> a
['ab', 3, 4]
>>> a.pop() #默认是删除最后一个元素,也可以跟一个具体的index
4
>>> a
['ab', 3]





5、成员关系:
in 、not in我们可以判断一个元素是否在列表里。
返回一个bool类型,元素在列表里返回true,否则返回fasle.

1
2
3
4
5
>>> a =
>>> 2 in a
True
>>> 5 not in a
True





6、列表推导式:


6.1 、首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
比如我们要生成一个包含1到10的列表

1
2
3
4
>>>

>>> range(1,11)








6.2、加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
要生成包含1到10的所有奇数列表。

1
2
3
4
>>> range(1,11,2)

>>>







6.3 取出1-100的所有值的平方。

1





6.4 生成字符串

1
['the %s' % dfor d in xrange(10)]




6.5 生成元组

1
2
>>> [(x,y) for x in range(2) for y in range(2)]
[(0, 0), (0, 1), (1, 0), (1, 1)]




6.6 生成字典

1
2
>>> dict([(x,y) for x in range(3) for y in range(2)]) #后面的键会覆盖前面的键
{0: 1, 1: 1, 2: 1}







7、排序翻转:sort,reverse

1
2
3
4
5
6
>>> a=
>>> b=a.sort() #直接修改原列表,返回的是一个None
>>> print b
None
>>> print a





list的reverse函数:反转一个list, 直接修改原列表,它的返回值为none
比如上面的列表a

1
2
3
4
5
b = a. reverse()
print b#输出的内容是None
>>> b=a.reverse()
>>> a#直接看a列表变量能看到翻转的效果。






8、内置list方法,返回一个列表,参数是可迭代对象。里面输出的内容还是保持了传入的可迭代对象的元素和顺序。如果参数为空,则返回一个空的列表

1
2
3
4
5
6
7
a = "asd"
list(a)
>>> a="asd"
>>> list(a)
['a', 's', 'd']
>>> list((1,3))






9、xrange和range的具体区别。
9.1 xrange的用法:

xrange(开始,结束,步长)
xrange 它生成一个xrange对象。
比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> a = xrange(1,10)
>>> print type(a)
<type 'xrange'>
>>> print a
1
>>> x = xrange(1,10)#返回的是一个生成器
>>> x
xrange(1, 10)
>>> b =range(1,10) #返回的是一个列表
>>> type(b)
<type 'list'>
>>> b

>>> x
1
>>> b
1





range: 直接生成一个列表对象。

xrange: 它是生成一个xrange对象.
xrange的用法:

1、当我们需要操作一个非常大的数据,而且内存比较吃紧的时候,我们可以用xrange来操作省内存。xrange的数据是取的时候才生成,而range是一次性生成好
2、xrange一般用在循环里面,比如我们只需要操作部分数据的话,而不是返回全部元素来完成操作,推荐用xrange,效率更高。

比如:

1
2
3
4
5
6
7
8
for m in range(1000):#
    if m == 10:
      print 'sss'
      break
for m in xrange(1000):#
    if m == 10:
      print 'sss'
      break






10、列表的引用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> a = ['i','am','lilei']
>>> b=a
>>> id(a)
46944392840544
>>> id(b)
46944392840544
>>> a="hello"
>>> print b
hello
>>> print b
['i', 'am', 'hello']
>>> del b
>>> a #删除了b的引用,a的引用还是在
['i', 'am', 'hello']






小技巧之再议删除
1、a = []
2、del a 删除列表对象的引用
3、del a[:] 清空列表对象里的元素,等价于a =[]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> a = ['i','am','lilei']
>>> b=a
>>> a=[]
>>> b
['i', 'am', 'lilei']
>>> del a[:]
>>> a
[]
>>> b
['i', 'am', 'lilei']
>>> a=b
>>> del a
>>> b
['i', 'am', 'lilei']





练习:

1、下面列表:
a =
输出下面的结果:


>>> a# 第一个参数是闭区间、第二个参数是开区间

>>> a[-5:-2]



2、有下面2个列表
a =
b =

用2个方法输出下面结果:



1
2
3
4
5
>>> a+b

>>> a.extend(b) #将b的内容打散插入到a中
>>> a







>>> a =
>>> a.append(b) #将b作为一个整体插入
>>> a
]

>>> a.insert(3,b) #将b作为一个整体插入
]

三 有下面2个列表:

a =
b=
输出结果:

1:

2:


四:用列表推导式生成100内的大于20的偶数

1
2
>>>
>>> range(20,101,2)





五: 已知:元组 a = (1,2,3) 利用list方法,输出下面的结果:
(1,2,4)

1
2
3
4
5
6
>>> a = (1,2,3)
>>> a=list(a)
>>> a=4
>>> a=tuple(a)
>>> a
(1, 2, 4)






六: 利用列表推导完成下面习题:
1 输出结果:

1
>>> ["%s love python"%xfor x in range(1,11)]





2 输出结果:[(0,0),(0,2),(2,0),(2,2)]

1
2
>>> [(x,y) for x in range(0,3,2) for y in range(0,3,2)]
[(0, 0), (0, 2), (2, 0), (2, 2)]





七:
a =
b = a[:]
del a
b的值是什么,为什么呢?

1
2
3
4
5
>>> a =
>>> b=a[:]
>>> del a
>>> b





因为b和a指向的是不同的对象地址


页: [1]
查看完整版本: python 列表特点及常用操作