序列通常有2个特点:

1,可以根据索引取值

2,可以切片操作

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

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

一、字符串类型

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

 >>> name='ghostwu'
>>> name[0]
'g'
>>> name[1]
'h'
>>> name[6]
'u'
>>>

>切片操作,第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的作用:查看数据类型。

 >>> name='My Name Is Ghostwu'
>>> name[-1]
'u'
>>> name[-1:-4]
''
>>> name[-1:-4:-1]
'uwt'
>>> type(name)
<type 'str'>
>>> name[2]
' '
>>> name[2:]
' Name Is Ghostwu'
>>> name[2:-1]
' Name Is Ghostw'
>>>

字符串其他小技巧: 

>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)
''
>>>

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

 >>> str="abc"
>>> str2="ab1"
>>> cmp(str,str2)
1
>>> cmp(str2,str)
-1
>>> str2="abc"
>>> cmp(str,str2)
0
>>>

二、元组类型

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

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

 >>> userinfo="ghostwu 20 male"
>>> type(userinfo)
<type 'str'>
>>> userinfo[0:7]
'ghostwu'

如果用元组来处理

 >>> userinfo=("ghostwu","","male")
>>> type(userinfo)
<type 'tuple'>
>>> userinfo[0]
'ghostwu'
>>> userinfo[1]
''
>>> userinfo[2]
'male'
>>>

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

>>> 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'

>列表的切片操作

 >>> userinfo=['ghostwu',20,'male']
>>> userinfo[0:1]
['ghostwu']
>>> userinfo[0:2]
['ghostwu', 20]
>>> userinfo[::2]
['ghostwu', 'male']
>>> userinfo[::]
['ghostwu', 20, 'male']
>>> userinfo[::1]
['ghostwu', 20, 'male']

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

 >>> userinfo=['ghostwu',20,'male']
>>> len(userinfo)
3
>>> userinfo='zhangsan'
>>> len(userinfo)
8
>>> userinfo=[]
>>> len(userinfo)
0
>>> userinfo[0]="ghostwu"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> userinfo=["ghostwu",20,"male"]
>>> userinfo[0]="zhangsan"
>>> userinfo
['zhangsan', 20, 'male']
>>> userinfo[3]="china"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>>

>列表操作:

取值:切片和索引    修改: 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()

 >>> userinfo=["ghostwu",20]
>>> userinfo
['ghostwu', 20]
>>> userinfo.append("male")
>>> userinfo
['ghostwu', 20, 'male']
>>> userinfo.append("china")
>>> userinfo
['ghostwu', 20, 'male', 'china']

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

 >>> userinfo
['ghostwu', 20, 'male', 'china']
>>> type(userinfo)
<type 'list'>
>>> userinfo.remove(20)
>>> userinfo
['ghostwu', 'male', 'china']
>>> userinfo.remove("china")
>>> userinfo
['ghostwu', 'male']
>>> userinfo=['ghostwu',20,'ghostwu','male','ghostwu']
>>> userinfo
['ghostwu', 20, 'ghostwu', 'male', 'ghostwu']
>>> userinfo.remove('ghostwu')
>>> userinfo
[20, 'ghostwu', 'male', 'ghostwu']
 >>> userinfo
[20, 'ghostwu', 'male', 'ghostwu']
>>> type(userinfo)
<type 'list'>
>>> userinfo.remove('male')
>>> userinfo
[20, 'ghostwu', 'ghostwu']
>>> del( userinfo[1] )
>>> userinfo
[20, 'ghostwu']

查找: var in list

 >>> userinfo
[20, 'ghostwu']
>>> 20 in userinfo
True
>>> '' in userinfo
False
>>> 'ghostwu' in userinfo
True

四、字典

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

 >>> userinfo={'name':'ghostwu', 1 : 20, 'age' : 20, 'sex' : 'male' }
>>> type(userinfo)
<type 'dict'>
>>> userinfo
{1: 20, 'age': 20, 'name': 'ghostwu', 'sex': 'male'}
>>> userinfo['name']
'ghostwu'
>>> userinfo['age']
20
>>> userinfo[1]
20

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

 >>> a=10
>>> b=20
>>> dic={a:'ghostwu','b':'male'}
>>> dic
{10: 'ghostwu', 'b': 'male'}
>>> dic[10]
'ghostwu'
>>> dic['a']

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

 >>> userinfo={'name':'ghostwu','age':20,'sex':'male'}
>>> for key in userinfo:
... print key
...
age
name
sex
>>> for key in userinfo:
... print userinfo[key]
...
20
ghostwu
male
>>>

为字典增加一项值

 >>> userinfo
{'age': 20, 'name': 'ghostwu', 'sex': 'male'}
>>> type(userinfo)
<type 'dict'>
>>> userinfo['email']='test@admin.com'
>>> userinfo
{'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:获取所有的值

 >>> userinfo={'name':'ghostwu','age':20,'sex':'male'}
>>> userinfo.keys()
['age', 'name', 'sex']
>>> userinfo.values()
[20, 'ghostwu', 'male']

python数据类型:序列(字符串,元组,列表,字典)的更多相关文章

  1. python基础之数据类型/字符串/元组/列表/字典

    Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...

  2. python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

    #python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...

  3. Python之路 day2 字符串/元组/列表/字典互转

    #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...

  4. python字符串/元组/列表/字典互转

    #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...

  5. 转:python字符串/元组/列表/字典互转

    #-*-coding:utf-8-*-  #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ...

  6. python 小白(无编程基础,无计算机基础)的开发之路,辅助知识6 python字符串/元组/列表/字典互转

    神奇的相互转换,小白同学可以看看,很有帮助 #1.字典dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ...

  7. 【转】python字符串/元组/列表/字典互转

    #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...

  8. python数据类型详解及列表字典集合推导式详解

    一.运算符 Python语言支持以下类型的运算符: 算术运算符 如: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 print(a ...

  9. python数据类型(字符串、列表操作)

    一.整形和浮点型整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正整数.负整数和0,浮点型的也就是 ...

随机推荐

  1. linux 管理权限

    linux 管理权限 linux 文件 权限 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- 2 root adm 4096 2013-08-07 11:03 ...

  2. idea 使用debugger技巧

    1,背景 每个开发人员每天都离不开debugger,只要你在编码,就需要调试,作为一个开发快10年的老程序员每天都要写很多代码,当每个人接到任务的时候都会想,这些功能其实很快就能写完,没错,对于写代码 ...

  3. 编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]

    首先定义个fn用来返回整数的取值范围: function getRand(a,b){ var rand = Math.ceil(Math.random()*(b-a)+a); return rand; ...

  4. ubuntu17.10 python3.6 install plugins for AI

    install order: tensorflow-gpu scikit-learn numpy scipy matplotlib tkinter tensorflow-gpu : pip insta ...

  5. Linux 格式化和挂载数据盘

    如果您已经为 ECS 实例配了数据盘,您需要先格式化数据盘并挂载文件系统后才能正常使用数据盘. 注意: 磁盘分区和格式化是高风险行为,请慎重操作.本文档描述如何处理一个新买的数据盘,如果您的数据盘上有 ...

  6. Python后端(一)——客户端/服务端

    网址组成(四部分) 协议      http, https(https 是加密的http) 主机      g.cn zhihu.com之类的网址 ,因此一般不用填写 路径      下面的「/」和「 ...

  7. 理解Activity.runOnUiThread()

    这是一篇译文(中英对照),原文链接:Understanding Activity.runOnUiThread() When developing Android applications we alw ...

  8. Java遍历文件目录

    函数介绍 File[] listFiles():返回当前文件的子目录或子文件的文件数组. 遍历目录 调用listFiles()即可得文件的子目录和子文件,如果存在子目录,那么子目录需要再次调用list ...

  9. HDU - 2112 HDU Today Dijkstra

    注意: 1.去重边 2.终点和起点一样,应当输出0 3.是无向图 AC代码 #include <cstdio> #include <cmath> #include <al ...

  10. 【重磅】PRO基础版免费,是时候和ExtJS说再见了!

    三石的新年礼物 9 年了,FineUI(开源版)终于迎来了她的继任者 - FineUIPro(基础版),并且完全免费!   FineUIPro(基础版)作为三石奉献给社区的一个礼物,绝对让你心动: 拥 ...