Python 列表List
- 加号
+
是列表连接运算符,星号*
是重复操作
>>> list = ['AA','BB','CC','DD']
>>> list[:3]
['AA', 'BB', 'CC']
>>> print list*2
['AA', 'BB', 'CC', 'DD', 'AA', 'BB', 'CC', 'DD']
>>> print list+['Hello']
['AA', 'BB', 'CC', 'DD', 'Hello']
- 列表元素的添加与删除
# -*- coding: UTF-8 -*-
list = ["Hello",1,3]
print list
list.append("Google")
print list
del list[2]
print list
输出:
['Hello', 1, 3]
['Hello', 1, 3, 'Google']
['Hello', 1, 'Google']
- Python列表函数:
3.1cmp(list1, list2)
: 可直接使用,先比较字符,字符相同在比较长度,但在python3中不存在该函数,可以使用operator.eq()来实现
# -*- coding: UTF-8 -*-
list1,list2 = [123,'xyz'],[456,'abc']
print cmp(list1,list2)
print cmp(list2,list1)
list3 = list1 + [786]
print cmp(list1,list3)
print cmp(list2,list3)
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
-1
1
-1
1
3.2 len()
返回列表的长度,可直接使用
3.3 max()
返回列表中元素的最大值,min()
返回列表中元素的最小值,均可直接使用
3.4 list(Tuple)
可将元祖转换为列表,可直接使用
# -*- coding: UTF-8 -*-
aTuple = (123,'xyz','zara','abc')
print aTuple
aList = list(aTuple)
print aList
输出
helloworld@LG-virtual-machine:~/code$ python test.py
(123, 'xyz', 'zara', 'abc')
[123, 'xyz', 'zara', 'abc']
- 列表的相关方法:
4.1list.append(obj)
:在列表末尾添加新的对象
4.2list.count(obj)
:统计某个元素在列表中出现的次数
4.3list.extend(seq)
:在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4.4list.index(obj)
:从列表中找出某个值第一个匹配项的索引位置
4.5list.insert(obj)
:将对象插入列表
4.6list.pop([index=-1])
:移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
4.7list.remove(obj)
:移除列表中某个值的第一个匹配项
4.8list.reverse()
:反向列表中元素
4.9list.sort(cmp=None, key=None, reverse=False)
:对原列表进行排序
# -*- coding: UTF-8 -*-
aList = [123,'xyz','zara','abc',123]
print aList
aList.append(2009)
print aList
print aList.count(123)
aList.extend([1,2,3,4])
print aList
aList.insert(2,'uvw')
print aList
aList.pop()
print aList
aList.pop(3)
print aList
aList.remove(123)
print aList
aList.reverse()
print aList
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
[123, 'xyz', 'zara', 'abc', 123]
[123, 'xyz', 'zara', 'abc', 123, 2009]
2
[123, 'xyz', 'zara', 'abc', 123, 2009, 1, 2, 3, 4]
[123, 'xyz', 'uvw', 'zara', 'abc', 123, 2009, 1, 2, 3, 4]
[123, 'xyz', 'uvw', 'zara', 'abc', 123, 2009, 1, 2, 3]
[123, 'xyz', 'uvw', 'abc', 123, 2009, 1, 2, 3]
['xyz', 'uvw', 'abc', 123, 2009, 1, 2, 3]
[3, 2, 1, 2009, 123, 'abc', 'uvw', 'xyz']
-
list.sort(cmp=None, key=None, reverse=False)
,cmp: 可选参数, 如果指定了该参数会使用该参数的方法进行排序;key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序;reverse:reverse = True 降序, reverse = False 升序(默认)。
# -*- coding: UTF-8 -*-
aList = [123,'Google','Taobao','Facebook']
aList.sort()
print aList
letters = ['e','a','b','d','c']
letters.sort(reverse=True)
print letters
def takeSecond(elem):
return elem[1]
random = [(2,5),(3,1),(4,2),(1,3),(5,4)]
random.sort(key=takeSecond,reverse=True)
print random
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
[123, 'Facebook', 'Google', 'Taobao']
['e', 'd', 'c', 'b', 'a']
[(2, 5), (5, 4), (1, 3), (4, 2), (3, 1)]
Python 元祖Tuple
- 元祖用
()
标志,内部元素用逗号隔开,但是元祖不能二次赋值,相当于只读列表
>>> tuple=('AA','BB','CC','DD')
>>> print tuple
('AA', 'BB', 'CC', 'DD')
>>> tuple[2]=1000
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> tuple[2:]
('CC', 'DD')
>>> print tuple+['Hello']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "list") to tuple
>>> print tuple+('Hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "str") to tuple
>>> print tuple+('Hello',)
('AA', 'BB', 'CC', 'DD', 'Hello')
>>> tuple[2:2]
()
>>> tuple[2:3]
('CC',)
- 元祖中的元素值是不允许修改的,但是我们可以对元祖进行连接组合
# -*- coding: UTF-8 -*-
tup1 = (12,34,56)
tup2 = ('abc','xyz')
tup1 += tup2
print tup1
输出结果:
helloworld@LG-virtual-machine:~/code$ python test.py
(12, 34, 56, 'abc', 'xyz')
- 元祖里面的元素值是不允许删除的,但是可以使用
del
语句来删除整个元祖
# -*- coding: UTF-8 -*-
tup1 = (12,34,56)
print tup1
del tup1
print "after deleting tup1:",tup1
输出结果:可以看到在del
删除之后已经无法访问了
helloworld@LG-virtual-machine:~/code$ python test.py
(12, 34, 56)
after deleting tup1:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print "after deleting tup1:",tup1
NameError: name 'tup1' is not defined
- 元祖运算符
Python表达式 | 结果 | 描述 |
---|---|---|
len((1,2,3)) | 3 | 计算元素个数 |
(1,2,3)+(4,5,6) | (1,2,3,4,5,6) | 连接 |
("hello",)*4 | ("hello","hello","hello","hello") | 复制 |
3 in (1,2,3) | True | 判断元素是否存在元祖中 |
for x in (1,2,3):print x, | 1,2,3 | 迭代 |
- 任何无符号的对象,以逗号隔开,默认为元祖
# -*- coding: UTF-8 -*-
print 'abc', -4.24e93, 18+6.6j, 'xyz'
x, y = 1, 2
print "value of x,y:",x,y
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
abc -4.24e+93 (18+6.6j) xyz
value of x,y: 1 2
Python字典
字典用{}
标志,由索引key和它对应的值value组成,与列表的区别在于:列表是有序的对象集合,字典是无序的对象集合,列表中的元素通过偏移下标来取,而字典中的元素是通过键值来存取的。
>>> dict = {}
>>> dict
{}
>>> dict['one']="This is one"
>>> dict
{'one': 'This is one'}
>>> dict[2]=2.0
>>> dict
{2: 2.0, 'one': 'This is one'}
>>> print dict['one']
This is one
>>> print dict[2]
2.0
>>> print dict.keys()
[2, 'one']
>>> print dict.values()
[2.0, 'This is one']
- 字典元素的删除
dict = {'Name':'Tom','Age':7,'Class':'First'}
print dict
del dict['Name']#删除键是'Name'的条目
print dict
dict.clear()#清空词典的所有条目
del dict#删除词典
print dict#dict被删除后,这里解释器认为这是关键词dict,所以输出type
helloworld@LG-virtual-machine:~/code$ python test.py
{'Age': 7, 'Name': 'Tom', 'Class': 'First'}
{'Age': 7, 'Class': 'First'}
<type 'dict'>
- 字典相关函数的使用:
3.1cmp(dict,dict)
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':7,'Class':'First'}
dict2 = {'Name':'Jack','Age':5,'Class':'Second'}
dict3 = {'name':'Tom','Age':7,'Class':'First'}
print "Return value:%d"%cmp(dict1,dict2)
print "Return value:%d"%cmp(dict1,dict3)
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
Return value:1
Return value:-1
3.2 len()
:计算字典元素个数,即键的总数;
3.3 str()
:输出字典可打印的字符串表示
3.4 type()
返回输入变量的类型,如果是字典就返回字典类型
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':7,'Class':'First'}
print dict1
print str(dict1)
print len(dict1)
print type(dict1)
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
{'Age': 7, 'Name': 'Tom', 'Class': 'First'}
{'Age': 7, 'Name': 'Tom', 'Class': 'First'}
3
<type 'dict'>
- 字典的内置方法:
4.1dict.clear()
:删除字典内的所有元素
4.2dict.copy()
:返回字典的浅复制
4.3dict.fromkeys(seq[,val])
:创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
# -*- coding: UTF-8 -*-
seq = ('Google', 'Facebook','Apple')
dic = dict.fromkeys(seq)
print "新字典:%s"%str(dic)
dic1 = dict.fromkeys(seq,10)
print dic1
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
新字典:{'Google': None, 'Facebook': None, 'Apple': None}
{'Google': 10, 'Facebook': 10, 'Apple': 10}
4.4 dict.get(key,default=None)
:返回函数指定键的值,如果值不存在则返回默认值
4.5 dict.has_key(key)
:函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false。
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':20}
print "value:%s"%dict1.get('Age')
print "value:%s"%dict1.get('Class')
print "value:%s"%dict1.get('Class','No')
print "value:%s"%dict1.has_key('Class')
print "value:%s"%dict1.has_key('Age')
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
value:20
value:None
value:No
value:False
value:True
4.6 dict.item()
:以列表返回可遍历的(key,value)元祖数组
4.7 dict.keys()
:以列表返回一个字典所有的键
4.7.1 dict.values()
:以列表返回一个字典所有的值
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':20,'class':'First'}
print dict1.items()
for key,value in dict1.items():
print key,value
print dict1.keys()
print dict1.values()
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
[('Age', 20), ('Name', 'Tom'), ('class', 'First')]
Age 20
Name Tom
class First
['Age', 'Name', 'class']
[20, 'Tom', 'First']
4.8 dict.setdefault(key,default=None)
:key:查找的键值;default:键不存在时,设置的默认键值;如果字典中包含有给定键,则返回该键对应的值,否则返回该键设置的值
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':20,'class':'First'}
print dict1.setdefault('Name','Jack') #这里并不会更改 Tom 为 Jack
print dict1.setdefault('gender','Male')
print dict1
输出:
Tom
Male
{'gender': 'Male', 'Age': 20, 'Name': 'Tom', 'class': 'First'}
4.9 dict.update(dict2)
:把dict2的键/值对更新到dict里
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':20,'class':'First'}
dict2 = {'Name':'Jack','Gender':'Male'}
dict1.update(dict2)
print dict1
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
{'Gender': 'Male', 'Age': 20, 'Name': 'Jack', 'class': 'First'}
4.10 dict.pop(key[,default])
:删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':20,'class':'First'}
temp = dict1.pop('Name',None)
temp1 = dict1.pop('gender',None)
print temp
print temp1
print dict1
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
Tom
None
{'Age': 20, 'class': 'First'}
4.10 dict.popitem()
:随机返回并删除字典中的一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常
# -*- coding: UTF-8 -*-
dict1 = {'Name':'Tom','Age':20,'class':'First'}
temp = dict1.popitem()
print temp
print dict1
输出:
helloworld@LG-virtual-machine:~/code$ python test.py
('Age', 20)
{'Name': 'Tom', 'class': 'First'}