问题:今天学习python数据结构中的List和Tuple。

目标:了解二者的区别,学会一般的应用

相关知识:
列表(List) : 类似于 .NET ArrayList / List。
元组(Tuple) : 列表的只读版。

1、二者之间转换:list() / tuple() 函数实现列表和元组之间进行转换。
>>>>>> a = ['a', 'b', 'c'] 
>>>>>> a 
['a', 'b', 'c'] 
>>>>>> b = tuple(a) 
>>>>>> b 
('a', 'b', 'c')
>>>>>> c = list(b) 
>>>>>> c 
['a', 'b', 'c']

2、二者可以接收字符串参数

url_l = list("xwy2.com")
print(url_l)
['x', 'w', 'y', '2', '.', 'c', 'o', 'm']
url_t = tuple("xwy2.com")
print(url_t)
('x', 'w', 'y', '2', '.', 'c', 'o', 'm')

3、运算符操作

>>>>>> [1, 2] * 2 
[1, 2, 1, 2] 
>>>>>> [1, 2] + [3, 4] 
[1, 2, 3, 4]

4、in/not in 操作

可以使用 in / not in 来判断是否包含某个元素。

>>>>>> a = [1, 2, 3] 
>>>>>> 1 in a 
True 
>>>>>> 4 in a 
False 
>>>>>> b = (1, 2, 3) 
>>>>>> 2 in b 
True

5、range()的操作

可以使用 range() 函数获得一个整数列表,甚至进行运算和添加过滤条件。

range(start, stop[, step])

>>>>>> range(10) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>>>>> range(2, 10, 2) 
[2, 4, 6, 8] 
>>>>>> range(2, 7) 
[2, 3, 4, 5, 6] 
>>>>>> [x*2 for x in range(10)] 
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 
>>>>>> [x for x in range(10) if x%2>0] 
[1, 3, 5, 7, 9] 
>>>>>> [x + 1 for x in range(10) if x%2==0] 
[1, 3, 5, 7, 9]

6、Slices
和字符串一样,可以通过序号或切片进行访问。

>>>>>> b = (1,2,3) 
>>>>>> b[-1] 

>>>>>> b[1:-1] 
(2,)
>>>>>> b[1] 

>>>>>> b[1:] 
(2, 3)
>>>>>> b[-1] 

>>>>>> b = [1,2,3] 
>>>>>> b[1]  = 100 
>>>>>> b 
[1, 100, 3]

7、filter()过滤

可以使用filter() 进行过滤。

>>>>>> a = range(10) 
>>>>>> a 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>>>>> def divfilter(i): 
return i%2 == 0

>>>>>> filter(divfilter, a) 
[0, 2, 4, 6, 8]

简写:

>>>>>> filter(lambda i: i%2==0, range(10)) 
[0, 2, 4, 6, 8]

当 function 参数(第一个参数)为 None 时,可以用来过滤掉空值。

>>>>>> b = ['a', '', [], [1,2]] 
>>>>>> filter(None,b) 
['a', [1, 2]]

map() 类似 .NET 中的 Array.Foreach()

>>>>>> map(lambda i:i*2, range(10)) 
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

可以使用 reduce() 对元素进行统计。

>>>>>> import operator 
>>>>>> reduce(operator.add, range(10)) 
45 
>>>>>> reduce(operator.sub, [100, 5, 7]) 
88

zip() 方法可以对两个或多个列表/元组进行交叉合并

>>>>>> zip(range(2,10), ('a', 'b', 'c', 'd', 'e')) 
[(2, 'a'), (3, 'b'), (4, 'c'), (5, 'd'), (6, 'e')]

8、其它操作

>>>>>> a = ['a','b','c'] 
>>>>>> a.index('b') 

>>>>>> a += ['d'] 
>>>>>> a 
['a', 'b', 'c', 'd'] 
>>>>>> a += ['b'] 
>>>>>> a 
['a', 'b', 'c', 'd', 'b'] 
>>>>>> a.count('b') 

>>>>>> a.insert(1, 's') 
>>>>>> a 
['a', 's', 'b', 'c', 'd', 'b'] 
>>>>>> a.remove('s') 
>>>>>> a 
['a', 'b', 'c', 'd', 'b'] 
>>>>>> a.pop(2) 
'c' 
>>>>>> a 
['a', 'b', 'd', 'b'] 
>>>>>> a.reverse() 
>>>>>> a 
['b', 'd', 'b', 'a'] 
>>>>>> a.sort() 
>>>>>> a 
['a', 'b', 'b', 'd'] 
>>>>>> a.extend(['e','f']) 
>>>>>> a 
['a', 'b', 'b', 'd', 'e', 'f'] 
>>>>>> a.append('m', 'n')

Traceback (most recent call last): 
File "<pyshell#72>", line 6, in <module> 
a.append('m', 'n') 
TypeError: append() takes exactly one argument (2 given) 
>>>>>> a.append(['m','n']) 
>>>>>> a 
['a', 'b', 'b', 'd', 'e', 'f', ['m', 'n']]

Python3基础知识之数据结构List和Tuple的更多相关文章

  1. 学习Python3基础知识过程中总结

    print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...

  2. 深入理解python(二)python基础知识之数据结构

    数据结构 Python中的内置数据结构(Built-in Data Structure):列表list.元组tuple.字典dict.集合set,这里只着重说前三个 >>> d=di ...

  3. Python3基础知识

    1.查看关键字 Python3查看关键字要先导入模块keyword,然后运用keyword的属性kwlist获取 >>> import keyword>>> key ...

  4. Python3基础知识之日期时间与字符的转换

    问题:“猿类”们都知道,编程中都会涉及到日期.时间类型与字符串类型的转换.不同场景,需要将字符串格式转换为日期类型:也需要将日期类型转换为字符串格式. 目标: 学习和积累python中time和dat ...

  5. Python3基础知识之元组、集合、字典

    1.元组 元组特点元组是不可变的两个元组可以做加法,不能做减法 元组的方法 >>> S('a', 'b', 'c', 'd', 'e')>>> S=('a','b' ...

  6. python3基础知识梳理

    一.数据类型 1.数字 int(整型) long(长整型) float(浮点型) complex(复数) 2.布尔值 True或False 3.字符串   二.变量 变量命名规则: 变量名只能是 字母 ...

  7. JAVA核心技术I---JAVA基础知识(数据结构基础)

    一:数组 (一)基本内容是与C一致的 (二)数组定义和初始化 (1)声明 int a[]; //a没有new操作,没有被分配内存,为null int[] b; //b没有new操作,没有被分配内存,为 ...

  8. Python3基础知识之运算符

    题:今天学习python运算符,学完了回头看看与.net和java有什么异同. 目标:学习了解运算符,学会一般的应用. 相关知识: Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算 ...

  9. Python3 - 基础知识、基本了解

    一.Python到底是什么? (抄自 金角大王) 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去, ...

随机推荐

  1. linux上静态库和动态库的编译和使用(附外部符号错误浅谈)

    主要参考博客gcc创建和使用静态库和动态库 对于熟悉windows的同学,linux上的静态库.a相当于win的.lib,动态库.so相当于win的.dll. 首先简要地解释下这两种函数库的区别,参考 ...

  2. SpringBoot Web开发(5) 开发页面国际化+登录拦截

    SpringBoot Web开发(5) 开发页面国际化+登录拦截 一.页面国际化 页面国际化目的:根据浏览器语言设置的信息对页面信息进行切换,或者用户点击链接自行对页面语言信息进行切换. **效果演示 ...

  3. <Numerical Analysis>(by Timothy Sauer) Notes

    2ed,  by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...

  4. WINDOWS NT操作系统的注册表文件

    WINDOWS NT操作系统的注册表文件 WINDOWS NT注册表文件分为系统文件和用户文件两类. 系统设置和缺少用户 配置数据存放在系统C:\Windows\System32\config文件夹下 ...

  5. 使用redis-cli --pipe快速插入数据

    具体实现步骤如下:(参考http://www.cnblogs.com/ivictor/p/5446503.html) 1. 新建一个文本文件redis_commands.txt,包含redis命令 S ...

  6. Flask-在Flask中跨请求传递数据资源

    利用 Flask的底层Werkzeug是有缓存支持的,不用使用redis等第三方. 原文地址如下: https://blog.csdn.net/yannanxiu/article/details/52 ...

  7. 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)

    摘要: 数据挖掘.机器学习和推荐系统中的评测指标—准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...

  8. Linq(高级查询)

    一.条件查 public List<Users> ss(string ids) { List<Users> ulist=new List<Users>(); 声明使 ...

  9. Shell脚本1-20例

    1.每天生成一个文件 描述:请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为)2017-07-05.log, 并且把磁盘的使用情况写到到这个文件中,(不用考虑cron ...

  10. 关于如何安装使用Git、tortoiseGit、Git@osc

    摘要: 讲解git在git@osc上使用的正确入门姿势. 关于Git代码托管的好处,这里就不再进行说明了.相信想去使用的人都应该有所了解啦.在使用开源中国里面的git@osc时,我们得先做入下几个工作 ...