基础知识回顾——通用序列操作

数据结构是计算机存储和组织数据的方式。Python中有三类四种内建的数据结构,分别是序列(List、Tuple)、映射(Dictionary)以及集合(Set)。

所有序列类型都可以进行某些特定的操作,这些操作包括:索引、分片、加、乘、迭代以及检查某个元素是否属于序列的成员(成员资格),还有计算序列长度、找出最大元素和最小元素的内建元素。

1.索引

1 >>> greeting = ("hello")
2 >>> greeting[1]
3 ‘e‘
4 >>> greeting[-2]
5 ‘l‘

2.分片

 1 >>> num = [1,5,4,7,0]  #从左往右分片起始索引为0,从右往左分片起始索引为-1
 2 >>> num[1:3]
 3 [5, 4]
 4 >>> num[0:-2]
 5 [1, 5, 4]
 6 >>> num[2:-2]
 7 [4]
 8
 9 #开始点的元素包括在结果之中,结束点的元素则不在分片之内;
10 #对于一个正数步长,会从序列头部开始向右提取元素,直到最后一个元素,对于负数步长,则从序列的尾部开始向左提取元素,直到第一个元素
11 >>> num[0:4:2]            
12 [1, 4]
13 >>> num[::-2]
14 [0, 4, 1]
15 >>> num[2::-2]
16 [4, 1]
17 >>> num[:2:-2]
18 [0]

3.加法:相同类型的序列才能进行连接操作

 1 >>> [1,2,3]+[4,5]
 2 [1, 2, 3, 4, 5]
 3 >>> ‘hello‘+‘world‘
 4 ‘helloworld‘
 5 >>> [1,2,3]+‘hello‘
 6
 7 Traceback (most recent call last):
 8   File "<pyshell#201>", line 1, in <module>
 9     [1,2,3]+‘hello‘
10 TypeError: can only concatenate list (not "str") to list

4.乘法

1 >>> ‘python,‘*5
2 ‘python,python,python,python,python,‘
3 >>> seq = [None]*10    #初始化一个长度为10的列表
4 >>> print seq
5 [None, None, None, None, None, None, None, None, None, None]
6 >>> print ‘!‘*5 + ‘Hello ,World‘ + ‘-‘*10    
7 !!!!!Hello ,World----------

5.成员资格

 1 >>> ‘P‘in ‘Python‘
 2 True
 3 >>> ‘p‘in ‘Python‘
 4 False
 5
 6 >>> ‘P‘in Python  #注意‘Python‘和Python区别
 7
 8 Traceback (most recent call last):
 9   File "<pyshell#211>", line 1, in <module>
10     ‘P‘in Python
11 NameError: name ‘Python‘ is not defined

6.迭代:通过for循环来遍历

 1 #并行迭代
 2 >>> names = [‘ann‘,‘beth‘,‘tita‘,‘jane‘]
 3 >>> ages = [‘21‘,‘19‘,‘18‘,‘22‘]
 4 >>> zip(names,ages)
 5 [(‘ann‘, ‘21‘), (‘beth‘, ‘19‘), (‘tita‘, ‘18‘), (‘jane‘, ‘22‘)]
 6 >>> for name,age in zip(names,ages):      #zip可以处理不等长的序列
 7     print name, ‘is‘ ,age ,‘years old‘
 8
 9 ann is 21 years old
10 beth is 19 years old
11 tita is 18 years old
12 jane is 22 years old
13
14 #索引迭代
15 >>> strings = ‘python‘
16 >>> for index,string in enumerate(strings):
17     if ‘3‘ in strings:
18         strings[index] = ‘h‘
19
20 #翻转和排序迭代:reversed方法返回一个可迭代对象,sorted方法返回列表
21 >>> sorted([2,0,7,5])
22 [0, 2, 5, 7]
23 >>> reversed(‘hello‘)
24 <reversed object at 0x02FF8C70>
25 >>> list(reversed(‘hello‘))
26 [‘o‘, ‘l‘, ‘l‘, ‘e‘, ‘h‘]

7.序列长度、最大值、最小值

1 >>> num = [120,14,39]
2 >>> len(num)
3 3
4 >>> max(num)
5 120
6 >>> min(num)
7 14
时间: 2024-09-28 22:24:28

基础知识回顾——通用序列操作的相关文章

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调

Python基础--通用序列操作

Python 继续 Python包含6种内建的序列,各自是:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.我们将逐步进行介绍. 今天主要介绍一下通用序列操作.放之四海而皆准. 1 索引 全部程序猿都知道,索引下标从零開始.Python也是这样, 索引0指向序列中第一个元素. 可是与C++相比.Python又添加了负索引.最后1个元素的索引是-1,从右至左是-2.-3 - 字符串字面值直接能够索引: >>>'Hello'[1] e 2 分片 分片通过冒号隔开

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型--装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. int i = 10; Object obj = i; 三:将引用类型转换为值

JS基础知识回顾:ECMAScript的语法(二)

ECMAScript中有五种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number.String ECMAScript还有一种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的. ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述六种数据类型之一,由于ECMAScript的数据类型具有动态性,因此的确没有再定义其他数据类型的必要了. 监狱ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

JS基础知识回顾:引用类型(一)

在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起,而对象时引用类型的一个实例. 尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构,所以虽然说引用类型与类看起来想死,但他们并不是相同的概念. 不过引用类型有的时候也可以被称为对象定义,因为他们描述的是一类对象所具有的属性和方法. 新对象是使用new操作符后跟一个构造函数来实现的,构造函数本身就是一个函数,只不过该函数时处于创建新对象的目的而定义的. ECMASc

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程