zoukankan      html  css  js  c++  java
  • python数据类型:序列(字符串,元组,列表,字典)

    序列通常有2个特点:

    1,可以根据索引取值

    2,可以切片操作

    字符串,元组,列表,字典,都可以看做是序列类型

    我的操作环境:Ubuntu16.04+python2.7

    一、字符串类型

    >按索引获取,索引从0开始

    1 >>> name='ghostwu'
    2 >>> name[0]
    3 'g'
    4 >>> name[1]
    5 'h'
    6 >>> name[6]
    7 'u'
    8 >>> 

    >切片操作,第1个冒号的值,表示从哪个索引开始切片。第2个冒号的值,表示从到哪个索引结束(注意:结果不包含这个位置)。第3个冒号的值,表示步长

    >>> name='My Name Is Ghostwu'
    >>> name[0:7]
    'My Name'
    >>> name[0:7:1]
    'My Name'
    >>> name[0:7:2]
    'M ae'

    默认切片操作为:从左到右。如果步长为负数,表示从右往左切片。从后往前数(索引从-1开始),  type的作用:查看数据类型。

     1 >>> name='My Name Is Ghostwu'
     2 >>> name[-1]
     3 'u'
     4 >>> name[-1:-4]
     5 ''
     6 >>> name[-1:-4:-1]
     7 'uwt'
     8 >>> type(name)
     9 <type 'str'>
    10 >>> name[2]
    11 ' '
    12 >>> name[2:]
    13 ' Name Is Ghostwu'
    14 >>> name[2:-1]
    15 ' Name Is Ghostw'
    16 >>> 

    字符串其他小技巧: 

    >len函数,计算长度

    >>> str="ghostwu"
    >>> len(str)
    7

    >+号,连接字符串

    >>> str="hi "
    >>> str2="ghostwu"
    >>> str+str2
    'hi ghostwu'

     >*号,重复字符串次数,是不是很简洁,在php中要用str_repeat或者循环连接字符串

    >>> str="ghostwu"
    >>> str*2
    'ghostwughostwu'
    >>> str
    'ghostwu'
    >>> 

    >in: 判断元素是否在序列中

    >>> str="ghostwu"
    >>> 'g' in str
    True
    >>> 'x' in str
    False
    >>> 

    >max最大值,min最小值

    >>> str="abc123"
    >>> max(str)
    'c'
    >>> min(str)
    '1'
    >>> 

    >cmp(str1,str2) 比较序列值是否相同

     1 >>> str="abc"
     2 >>> str2="ab1"
     3 >>> cmp(str,str2)
     4 1
     5 >>> cmp(str2,str)
     6 -1
     7 >>> str2="abc"
     8 >>> cmp(str,str2)
     9 0
    10 >>> 

    二、元组类型

    用名称=(item,item,)小括号定义,只有一项的时候,要加逗号

    字符串的痛点:如果用一个字符串,保存某个人的信息,那么在切片的时候(如人名,年龄,性别)就不太好操作

    1 >>> userinfo="ghostwu 20 male"
    2 >>> type(userinfo)
    3 <type 'str'>
    4 >>> userinfo[0:7]
    5 'ghostwu'

    如果用元组来处理

     1 >>> userinfo=("ghostwu","20","male")
     2 >>> type(userinfo)
     3 <type 'tuple'>
     4 >>> userinfo[0]
     5 'ghostwu'
     6 >>> userinfo[1]
     7 '20'
     8 >>> userinfo[2]
     9 'male'
    10 >>> 

    看,是不是非常简单?只有一项时?怎么定义?

    >>> userinfo=("ghostwu")
    >>> type(userinfo)
    <type 'str'>
    >>> 

    像上面这种定义方式,定义的是一个字符串类型。只有一项时,需要在后面加个逗号','

    >>> userinfo=('ghostwu',)
    >>> type(userinfo)
    <type 'tuple'>
    >>> userinfo[0]
    'ghostwu'
    >>> 

    元组定义之后,不可以被修改:

    >>> userinfo=("ghostwu",20,"male")
    >>> userinfo[0]="zhangsan"
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>> 

    可以使用类似es6的解构语法,把元组的每一项对应赋值给左边的变量:

    >>> userinfo=('ghostwu',20,'male')
    >>> name,age,sex=userinfo
    >>> name
    'ghostwu'
    >>> age
    20
    >>> sex
    'male'

    三、列表(list)

    >中括号定义

    >>> list1=[]
    >>> type(list1)
    <type 'list'>
    >>> userinfo=['ghostwu',20,'male']
    >>> type(userinfo)
    <type 'list'>
    >>> userinfo[0]
    'ghostwu'
    >>> userinfo[1]
    20
    >>> userinfo[2]
    'male'

    >列表的切片操作

     1 >>> userinfo=['ghostwu',20,'male']
     2 >>> userinfo[0:1]
     3 ['ghostwu']
     4 >>> userinfo[0:2]
     5 ['ghostwu', 20]
     6 >>> userinfo[::2]
     7 ['ghostwu', 'male']
     8 >>> userinfo[::]
     9 ['ghostwu', 20, 'male']
    10 >>> userinfo[::1]
    11 ['ghostwu', 20, 'male']

    >列表可以被重新赋值,列表项可以被修改,但是不能动态索引方式增加,否则报错(索引超出上限)

     1 >>> userinfo=['ghostwu',20,'male']
     2 >>> len(userinfo)
     3 3
     4 >>> userinfo='zhangsan'
     5 >>> len(userinfo)
     6 8
     7 >>> userinfo=[]
     8 >>> len(userinfo)
     9 0
    10 >>> userinfo[0]="ghostwu"
    11 Traceback (most recent call last):
    12   File "<stdin>", line 1, in <module>
    13 IndexError: list assignment index out of range
    14 >>> userinfo=["ghostwu",20,"male"]
    15 >>> userinfo[0]="zhangsan"
    16 >>> userinfo
    17 ['zhangsan', 20, 'male']
    18 >>> userinfo[3]="china"
    19 Traceback (most recent call last):
    20   File "<stdin>", line 1, in <module>
    21 IndexError: list assignment index out of range
    22 >>> 

    >列表操作:

    取值:切片和索引    修改: list[] = x

    >>> userinfo=['ghostwu',20,'male']
    >>> type(userinfo)
    <type 'list'>
    >>> userinfo[0]
    ... 
    'ghostwu'
    >>> userinfo[0:2]
    ['ghostwu', 20]

    修改列表的某一项时候,地址没有改变,还是列表本身

    >>> userinfo=["ghostwu",20,"male"]
    >>> id(userinfo)
    140648386293128
    >>> userinfo[0]="hello"
    >>> id(userinfo)
    140648386293128

    元组重新被赋值,相当于重新定义了一个新的元组:

    >>> userinfo=("ghostwu",20)
    >>> type(userinfo)
    <type 'tuple'>
    >>> userinfo[0]="hello"
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>> id(userinfo)
    140648386125696
    >>> userinfo=("zhangsan",30)
    >>> id(userinfo)
    140648386125552

    添加: list.append()

    1 >>> userinfo=["ghostwu",20]
    2 >>> userinfo
    3 ['ghostwu', 20]
    4 >>> userinfo.append("male")
    5 >>> userinfo
    6 ['ghostwu', 20, 'male']
    7 >>> userinfo.append("china")
    8 >>> userinfo
    9 ['ghostwu', 20, 'male', 'china']

     删除: del(list[])   list.remove(list[]) ,  注意:remove删除的是列表中第一次出现的值

     1 >>> userinfo
     2 ['ghostwu', 20, 'male', 'china']
     3 >>> type(userinfo)
     4 <type 'list'>
     5 >>> userinfo.remove(20)
     6 >>> userinfo
     7 ['ghostwu', 'male', 'china']
     8 >>> userinfo.remove("china")
     9 >>> userinfo
    10 ['ghostwu', 'male']
    >>> userinfo=['ghostwu',20,'ghostwu','male','ghostwu']
    >>> userinfo
    ['ghostwu', 20, 'ghostwu', 'male', 'ghostwu']
    >>> userinfo.remove('ghostwu')
    >>> userinfo
    [20, 'ghostwu', 'male', 'ghostwu']
     1 >>> userinfo
     2 [20, 'ghostwu', 'male', 'ghostwu']
     3 >>> type(userinfo)
     4 <type 'list'>
     5 >>> userinfo.remove('male')
     6 >>> userinfo
     7 [20, 'ghostwu', 'ghostwu']
     8 >>> del( userinfo[1] )
     9 >>> userinfo
    10 [20, 'ghostwu']

    查找: var in list

    1 >>> userinfo
    2 [20, 'ghostwu']
    3 >>> 20 in userinfo
    4 True
    5 >>> '20' in userinfo
    6 False
    7 >>> 'ghostwu' in userinfo
    8 True

    四、字典

    他的用法类似于javascript中的json,大括号中用键值对定义,取数据用对应的键

     1 >>> userinfo={'name':'ghostwu', 1 : 20, 'age' : 20, 'sex' : 'male' }
     2 >>> type(userinfo)
     3 <type 'dict'>
     4 >>> userinfo
     5 {1: 20, 'age': 20, 'name': 'ghostwu', 'sex': 'male'}
     6 >>> userinfo['name']
     7 'ghostwu'
     8 >>> userinfo['age']
     9 20
    10 >>> userinfo[1]
    11 20

    字典中的键,可以是字符串,也可以是变量

    1 >>> a=10
    2 >>> b=20
    3 >>> dic={a:'ghostwu','b':'male'}
    4 >>> dic
    5 {10: 'ghostwu', 'b': 'male'}
    6 >>> dic[10]
    7 'ghostwu'
    8 >>> dic['a']

    用类似javascript的for ... in语法 遍历字典:

     1 >>> userinfo={'name':'ghostwu','age':20,'sex':'male'}
     2 >>> for key in userinfo:
     3 ...     print key
     4 ... 
     5 age
     6 name
     7 sex
     8 >>> for key in userinfo:
     9 ...     print userinfo[key]
    10 ... 
    11 20
    12 ghostwu
    13 male
    14 >>> 

    为字典增加一项值

    1 >>> userinfo
    2 {'age': 20, 'name': 'ghostwu', 'sex': 'male'}
    3 >>> type(userinfo)
    4 <type 'dict'>
    5 >>> userinfo['email']='test@admin.com'
    6 >>> userinfo
    7 {'email': 'test@admin.com', 'age': 20, 'name': 'ghostwu', 'sex': 'male'}

    字典相关操作方法: del可以删除某一项,或者删除整个字典,dict.clear()是清空整个字典.  dict.pop( key ),删除字典中对应的key和值,并返回被删除的值

    >>> userinfo
    {'email': 'test@admin.com', 'age': 20, 'name': 'ghostwu', 'sex': 'male'}
    >>> type(userinfo)
    <type 'dict'>
    >>> userinfo['age']=30
    >>> userinfo
    {'email': 'test@admin.com', 'age': 30, 'name': 'ghostwu', 'sex': 'male'}
    >>> del(userinfo['age'])
    >>> userinfo
    {'email': 'test@admin.com', 'name': 'ghostwu', 'sex': 'male'}
    >>> userinfo.pop('email')
    'test@admin.com'
    >>> userinfo
    {'name': 'ghostwu', 'sex': 'male'}
    >>> userinfo.clear()
    >>> userinfo
    {}
    >>> del(userinfo)
    >>> userinfo
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'userinfo' is not defined
    >>> 

     字典有很多的方法,比如:keys获取所有的键,values:获取所有的值

    1 >>> userinfo={'name':'ghostwu','age':20,'sex':'male'}
    2 >>> userinfo.keys()
    3 ['age', 'name', 'sex']
    4 >>> userinfo.values()
    5 [20, 'ghostwu', 'male']
  • 相关阅读:
    Asp.net MVC 自定义路由在IIS7以上,提示Page Not Found 解决方法
    mysql 常用操作
    Mongo常用操作
    Cent Os 常用操作
    Window 8.1 开启Wifi共享
    解决 对象的当前状态使该操作无效 的问题
    unity3d: how to display the obj behind the wall
    unreal network
    rust borrow and move
    erlang的map基本使用
  • 原文地址:https://www.cnblogs.com/ghostwu/p/8583159.html
Copyright © 2011-2022 走看看