python数据结构及实例

来源:互联网 发布:守望先锋设置优化 编辑:程序博客网 时间:2024/06/06 01:48

Python3中有六个标准的数据类型:

  1. Numbers(数字)
  2. String(字符串)
  3. List(列表)
  4. Tuple(元组)
  5. Dictionaries(字典)
  6. Sets(集合)

数字类型:

Python 3支持int、float、bool、complex。内置的type()函数可以用来查询变量所指的对象类型。

    >>> a=1      >>> b=2.2      >>> c=1+2j      >>> print(a,b,c)      1 2.2 (1+2j)      >>> type(a)      <class 'int'>      >>> type(b)      <class 'float'>      >>> type(c)      <class 'complex'>  

字符串类:

    Python 具有单一的字符串类型str,字符串用单引号(‘ ’)或双引号(“ ”)括起来,同时使用反斜杠(\)转义特殊字符。如果不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串;另外,反斜杠可以作为续行符,表示下一行是上一行的延续。还可以使用"""..."""或者'''...'''跨越多行。字符串可以使用 + 运算符串连接在一起,或者用 * 运算符重复。

    >>> str1='python'      >>> str2="python3.6"      >>> str3=str1+str2      >>>print(str1)      python      >>> print(str2)      python3.6      >>> print(str1+" "+str2)      python python3.6  
Python中的字符串有两种索引方式,第一种是从左往右,从0开始依次增加;第二种是从右往左,从-1开始依次减少。
    >>> print(str1[-1])      n      >>> print(str1[0])      p  
  与C字符串不同的是,Python字符串不能被改变。向一个索引位置赋值,比如str1[0] = 'm' 会提示错误。

>>> str1[0]='m'  Traceback (most recent call last):    File "<pyshell#56>", line 1, in <module>      str1[0]='m'  TypeError: 'str' object does not support item assignment 

列表类型:

    List(列表) 是 Python 中使用最频繁的数据类型。列表是写在方括号之间、用逗号分隔开的元素列表。列表中元素的类型可以不相同,和字符串一样,列表同样可以被索引和切片,列表被切片后返回一个包含所需元素的新列表。

    >>> list1=[1,2,3.0,str1]      >>> print(list1)      [1, 2, 3.0, 'python']      >>> list2=[str2,'Jason_fu']      >>> print(list2)      ['python3.6', 'Jason_fu']      >>> print(list1+list2)      [1, 2, 3.0, 'python', 'python3.6', 'Jason_fu']  

与字符串不同的是,列表中的元素是可以改变的:

    >>> list1[2]='python3.6.0'      >>> print(list1)      [1, 2, 'python3.6.0', 'python']  
List内置了有很多方法:append()、pop()等等。

    >>> list1.append('new')      >>> print(list1)      [1, 2, 'python3.6.0', 'python', 'new']      >>> list1.pop(0)      1      >>> print(list1)      [2, 'python3.6.0', 'python', 'new']  

切片索引及元素遍历:

>>> nums=range(10)>>> print(nums)range(0, 10)>>> print(nums[0:5])range(0, 5)>>> print(nums[0])0>>> for num in nums:...     print(num)... 0123456789
列表推导:下面是将列表中的每个元素变成它的平方的例子。

nums = range(5)squares = []for x in nums:

此时运行结果为:

[0, 4, 16]

元组类型:

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组是写在小括号之间、用逗号隔开的元素列表。元组中的元素类型也可以不相同。元组与字符串类似,可以被索引且下标索引从0开始,也可以进行截取/切片。可以把字符串看作一种特殊的元组。虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

    >>> tuple1=(1,2,3.0,'python')      >>> print(tuple1)      (1, 2, 3.0, 'python')      >>> type(tuple1)      <class 'tuple'>      >>> tuple2=(list1,tuple1)      >>> print(tuple2)      ([2, 'python3.6.0', 'python', 'new'], (1, 2, 3.0, 'python'))  

字典类型:

字典(dictionary)是Python中非常有用的内置数据类型。字典是一种映射类型(mapping type),它是一个无序的键 : 值对集合。关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。在同一个字典中,关键字还必须互不相同。

    >>> dic2={'FCQING':'no1','JJ':'no2'}      >>> print(dic2)      {'FCQING': 'no1', 'JJ': 'no2'}      >>> dic2['FCQING']      'no1'      >>> dic2['kobe']='no3'      >>> print(dic2)      {'FCQING': 'no1', 'JJ': 'no2', 'kobe': 'no3'}  
构造函数 dict() 可以直接从键值对中构建字典,如下:
    >>> dic3=dict([('fcqing','NO1'),('jj','NO2'),('KOBE','NO3')])      >>> print(dic3)      {'fcqing': 'NO1', 'jj': 'NO2', 'KOBE': 'NO3'}  
字典类型也有一些内置的函数,例如clear()、keys()、values()等。
    >>> print(dic3.keys())      dict_keys(['fcqing', 'jj', 'KOBE'])      >>> print(dic3.values())      dict_values(['NO1', 'NO2', 'NO3'])      >>> dic3.clear()      >>> print(dic3)      {}  

同样,字典也可以for遍历:

dic1 = {'person': 2, 'cat': 4, 'spider': 8} #spider蜘蛛for animal in dic1:    legs = dic1[animal]    print ('A %s has %d legs' % (animal, legs))
运行结果为:

A person has 2 legsA cat has 4 legsA spider has 8 legs
使用 items 方法可以获得字典的键和对应的值:

dic1 = {'person': 2, 'cat': 4, 'spider': 8} #spider蜘蛛for animal,legs in dic1.items():    print ('A %s has %d legs' % (animal, legs))
字典也可以使用推导方法:

nums = range(5)even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}print (even_num_to_square)

集合类型:

集合(set)是一个无序不重复元素的集,与数学中的集合概念是对应的,也可进行相应的集合运算。基本功能是进行成员关系测试和消除重复元素。可以使用大括号或者set()函数创建set集合,注意:创建一个空集合必须用 set() 而不是 { },因为{ }是用来创建一个空字典。

    >>> set1={'fcqing','jj','kobe','Jason'}      >>> print(set1)      {'jj', 'kobe', 'Jason', 'fcqing'}      >>> 'jj'in set1      True      >>> 'JJ'in set1      False      >>> set2=set('welcome to python')      >>> set2      {'n', 'p', 'm', 'y', 't', 'l', 'h', 'o', 'c', 'e', 'w', ' '}      >>> set3=set('welcome to python3.6.0')      >>> set3      {'n', 'p', '6', '.', 'm', 'y', 't', '3', 'l', 'h', '0', 'o', 'c', 'e', 'w', ' '}      >>> set3-set2      {'6', '.', '3', '0'}      >>> set2&set3 #取交集      {'n', 'p', 'm', 'y', 't', 'w', 'l', 'h', 'o', 'e', 'c', ' '}      >>> set2|set3 #取并集      {'n', 'p', 'm', 'y', 't', '3', '0', 'e', 'w', '6', '.', 'l', 'h', 'o', ' ', 'c'}      >>> set3^set2#去不同时存在的元素      {'3', '0', '6', '.'}