Python有6个序列的内置类型,但最多见的是列表和元组。java
序列均可以进行的操做包括索引,切片,加,乘,检查成员。python
Python已经内置肯定序列的长度以及肯定最大和最小的元素的方法。数据结构
此处介绍四种数据结构,分别是:app
序列是Python中最基本的数据结构。序列中的每一个元素都有索引,索引正序从0开始,索引反序从-1开始。函数
列表是最经常使用的Python数据类型,列表的数据元素不须要具备相同的类型。列表是可变的类型。.net
总结起来:内容可变、长度可变、类型能够不一样,有序,能够容纳任何类型任意数量的对象。code
列表使用[]表示,其中的元素以逗号隔开。对象
代码示例:blog
l1 = [] # 声明一个空列表 l1 = list() #声明一个空列表 l2 = [1,2,3] l3 = ['a','b','c','d'] l4 = [1,2,3,'a','b','c',[],[10,'xyz']]
针对列表有和字符串有相同的操做。列表和字符串都是序列。列表是一种容器型序列,字符串是一种扁平型的序列。 操做以下:排序
代码示例:
l2 + l3
[1, 2, 3, 'a', 'b', 'c', 'd']
print l2[2] print l2[2:3] print l2[:3] print l2[2:] l2[2] = "abc" print l2
3 [3] [1, 2, 3] [3] [1, 2, 'abc']
list1 = [1,2,3] list1 * 2
[1, 2, 3, 1, 2, 3]
print 1 in list1 print 2 not in list1 for x in list1:print x,
True False 1 2 3
del list1[2] print list1 del list1
[1, 2]
len(l2)
3
list1 = (3,2,5,4,9) list2 = (1,2,3,4) max(list1)
9
min(list1)
2
cmp(list1,list2)
1
Python中提供了不少操做list的函数,具体以下:
# 向列表中追加元素,空列表只能使用此函数添加。 l1.append("2") l1
['2']
# 列表拼接,和+有区别,+是返回一个新的列表,此方法是直接在列表后面添加 l2.extend(l3)
# 在指定位置插入指定原酸 l2.insert(0,100)
# 从列表中找出指定元素第一次出现的位置。若是没有找到则报错。 l2.index(2)
1
# 针对原列表进行操做,反转列表。 l2.reverse() l2
[3, 2, 1]
# 删除并返回指定位置的元素,不指定默认删除并返回最后一个元素。 l2.pop()
'd'
# 删除第一次出现的指定元素。删除不存在的元素,会报错。 l2.remove(2) l2
[100, 'a', 'abc', 'b', 'c']
# 排序 l2.sort() l2
[100, 'a', 'abc', 'b', 'c']
Python中元组被称为不能修改的列表。元组自己就像一个作了限制的列表。
Python的元组与列表相似,不一样之处在于:
元组建立很简单,只须要在括号中添加元素,并使用逗号隔开便可。
元组中只包含一个元素时,须要在元素后面添加逗号。
代码示例:
t1 = tuple() t2 = () t3 = (1,) t4 = (1, 2, 3, "a", "b") type(t2)
tuple
元祖和列表的操做也及其的类似。也有如下几种操做:
代码示例:
tuple1 = (1,2,3,4) tuple2 = (7,8,9,0) tuple1 + tuple2
(1, 2, 3, 4, 7, 8, 9, 0)
tuple1 * 2
(1, 2, 3, 4, 1, 2, 3, 4)
tuple1[1]
2
tuple1[0:2]
(1, 2)
1 in tuple1
True
for x in tuple1: print x,
1 2 3 4
max(tuple1)
4
min(tuple1)
1
len(tuple1)
4
Python也提供了一些操做元祖的函数:
# 统计一个元素在元祖中出现的次数。 tuple1.count(1)
1
# 同list同样 tuple1.index(1)
0
字典是另外一种可变容器模型,且可存储任意类型对象。至关于java中的map。
字典的每一个键值 key value 对用冒号“:”分割,每一个键值对之间用逗号“,”分割,整个字典包括在花括号“{}”中。
字典值能够没有限制地取任何python对象,既能够是标准的对象,也能够是用户定义的。
字典的键必须知足如下两个条件:
代码示例:
d1 = {} #声明一个空字典 d2 = dict() #声明一个空字典 type(d2)
dict
d1 = {"name":"xh", "age":28}
d1["name"]
'xh'
字典有如下几种操做:
代码示例:
dic1 = {"name":"xinghan", "age":28} print dic1["name"] dic1["age"] = 29 print dic1["age"] print len(dic1) print str(dic1) print type(dic1) del dic1["age"] del dic1 print dic1
xinghan 29 2 {'age': 29, 'name': 'xinghan'} <type 'dict'> --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-8-ae0a48068d9a> in <module>() 8 del dic1["age"] 9 del dic1 ---> 10 print dic1 NameError: name 'dic1' is not defined
字典自己也提供了一些操做函数:
# 复制一个字典,浅拷贝 dic1 = {"name":"xinghan", "age":28, "gender":"man"} dic2 = dic1.copy() dic2
{'age': 28, 'gender': 'man', 'name': 'xinghan'}
# 建立一个以序列元素为key,指定固定值的字典。 li = ["zhangsan", "lisi", "wangwu", "maliu"] dic3 = dict.fromkeys(li, "man") dic3
{'lisi': 'man', 'maliu': 'man', 'wangwu': 'man', 'zhangsan': 'man'}
# 获取指定key的值。若是存在,那么获取的是第二个参数的值。 dic1.get("name", "haha")
'xinghan'
# 判断字典中是否存在指定的key,存在返回True,不存在返回False。 dic1.has_key("name")
True
# 将字典转换为list返回,元素为元祖。 dic1.items()
[('gender', 'man'), ('age', 28), ('name', 'xinghan')]
# 返回一个list,元素为字典的key。 dic1.keys()
['gender', 'age', 'name']
# 若是字典中包含给定的键,则返回该键的值,不然返回为该键设置的值。 dic1 = {"name":"xinghan", "age":28, "gender":"man"} dic1.setdefault("addr") dic1
{'addr': None, 'age': 28, 'gender': 'man', 'name': 'xinghan'}
# 将另一个字典,追加到当前字典中,存在相同key,当前字典的key对应的value会被覆盖。 dic2 = {"host":"local"} dic1.update(dic2) dic1
{'addr': None, 'age': 28, 'gender': 'man', 'host': 'local', 'name': 'xinghan'}
# 以list的形式返回全部value dic1.values()
['local', 'xinghan', 'man', 28, None]
# 删除指定的key,并返回key对应的value。 dic1.pop("host")
'local'
# 随机返回并删除一对键值,若是字典为空,则报错。 dic1.popitem()
('name', 'xinghan')
# 清空字典 dic1.clear() dic1
{}
在Python中,set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。
set是一个无序且不重复的元素集合。
set和dict相似,也是一组key的集合,但不存储value。因为key不能重复,因此,在set中,没有重复的key。
set有以下特性:
在Python中,建立空set必须使用函数set()。建立非空set可使用{}或者set()函数。
代码示例:
se1 = set() se2 = {"wang", "li", "hu", "hei"}
集合的操做,和数学概念中的集合相似,有以下:
代码示例:
se1 = {1, 2, 3, 4} se2 = {3, 4, 5, 6} se2 - se1
{5, 6}
se1 & se2
{3, 4}
se1 | se2
{1, 2, 3, 4, 5, 6}
se1 != se2
True
se1 == se2
False
se1 in se2
False
se1 not in se2
True
set自身提供了一些操做函数,以下:
# 向集合中添加元素 s1 = {1, 2, 3, 4, 5} s1.add(63456) s1
{1, 2, 3, 4, 5, 63456}
# 将另一个set的内容添加到当前set中。 s2 = {'abc', 'ab', "c", 'd'} s1.update(s2) s1
{1, 2, 3, 4, 5, 63456, 'ab', 'abc', 'c', 'd'}
# 移除指定的元素,元素不存在,不作任何操做。 s1.discard("abc") s1
{1, 2, 3, 4, 5, 63456, 'ab', 'c', 'd'}
# 删除指定元素,元素不存在将报错。 s1.remove(1) s1
{2, 3, 4, 5, 63456, 'ab', 'c', 'd'}
#随机删除一个元素,并返回该元素,当集合为空时,报错。 s1.pop()
63456
# 清空集合 s1.clear() s1
set()
# 浅拷贝 s1 = {1,2,3,4} s2 = s1.copy() s2
{1, 2, 3, 4}
上一篇:python基础语法
下一篇: