1. List和Tuple

List和Tuple是Python的内置的数据类型,区别在于可变和不可变,List用[]表示,Tuple用()表示,它们之间可以相互转换:

# List to Tuple
myList = [1, 2, 3, 4]
myTuple = tuple(myList) # Tuple to List
myTuple = ("A", "B", "C")
myList = list(myTuple)

可以使用len()函数计算长度:

myList = [1, 2, 3, 4]
myTuple = ("A", "B", "C")
print(len(myList))
print(len(myTuple))
# 4 3

由于Tuple是用小括号来声明,当只有一个元素时,为了避免歧义,需要加入一个逗号:

myTuple = (100)
print(myTuple)
# 100 myTuple = (100,)
print(myTuple)
# (100,)

Python通过索引获取列表内单一元素,并且支持索引值为负数,即从数组的末尾开始计数:

myList = [1, 2, 3, 4, 5]
print(myList[1])
# 2
print(myList[-1])
# 5

从上面的例子可以看出,索引值为正数时从索引0开始,索引值为负数时从索引-1开始,索引-1代表最后一个元素myList[len(myList)-1]

下面是List的常用增删改操作:

(1) 添加

myList = [1, 2, 3, "A", "B", "C"]

myList.append(4)
# 向列表末尾添加'4'
# [1, 2, 3, 'A', 'B', 'C', 4] myList.extend(["X", "Y", "Z"])
# 向列表末尾添加新列表
# [1, 2, 3, 'A', 'B', 'C', 4, 'X', 'Y', 'Z'] myList.insert(2, "apple")
# 在索引2处插入'apple'
# [1, 2, 'apple', 3, 'A', 'B', 'C', 4, 'X', 'Y', 'Z']

(2) 删除

myList = [1, 2, 3, "A", "B", "C"]

delItem = myList.pop()
# 删除列表末尾元素,将返回被删除的元素
# [1, 2, 3, 'A', 'B'], delItem = 'C' delItem = myList.pop(1)
# 删除索引1处的元素
# [1, 3, 'A', 'B'], delItem = 2 del myList[2]
# 删除索引2处的元素
# [1, 3, 'B'] del myList[0:2]
# 删除索引0到索引2(不包括索引2)的所有元素
# ['B'] myList.remove('B')
# 删除元素'B'
# []

(3) 获取

myList = [1, 2, 3, 4, "A", "B", "C", "X", "Y", "Z"]

print(myList[3])
# '4' newList = myList[:3]
# 从索引0开始,取到索引3(不包括索引3)
# [1, 2, 3] newList = myList[4:]
# 从索引4开始,取到最后一个元素
# ['A', 'B', 'C', 'X', 'Y', 'Z'] newList = myList[4:6]
# 从索引4开始,取到索引6(不包括索引6),[m:n]可以理解为从m开始,取n-m个元素
# ['A', 'B'] newList = myList[-3:-1]
# 从索引-3开始,取到索引-1(不包括索引-1)
# ['X', 'Y'] newList = myList[:-5]
# 从索引0开始,取到索引-5(不包括索引-5)
# [1, 2, 3, 4, 'A'] newList = myList[1:8:4]
# 从索引1开始,取到索引8(不包括索引8),每2个元素取1个
# [2, 4, 'B', 'X'] newList = myList[:]
# 原样复制一个List,等效于newList = myList
# [1, 2, 3, 4, 'A', 'B', 'C', 'X', 'Y', 'Z'] newList = myList[::-1]
# 将当前List倒序输出,得到一个新List(不影响原List)
# ['Z', 'Y', 'X', 'C', 'B', 'A', 4, 3, 2, 1] myStr = "ABCDEFGHIJKL"[3:6]
# 字符串也是一个List,从第3个字符取到第6个字符(不包括第6个字符)
# 'DEF' myStr = "ABCDEFGHIJKL"[::2]
# 整个字符串每2个字符取1个字符,生成新字符串
# 'ACEGIK' for k, v in enumerate(myList):
print(k, v)
# 遍历myList,同时列出数据和数据下标
# 0 1
# ...
# 9 Z myList = [1, 2, 3, 4, 5]
newList = [i*i for i in myList]
# 将List里的每个元素取平方,得到新List
# [1, 4, 9, 16, 25]

对纯数字的列表,可以通过min(),max(),sum()来进行科学计算

myList = [1, 2, 3, 4, 5]

minItem = min(myList)
# 1 maxItem = max(myList)
# 5 sumResult = sum(myList)
# 15

(4) 判断

myList = ["A", 1, 2, 3, "A", "B", "C", "X", "Y", "Z", "A"]
myStr = "What can I do for you?" result = "what" in myStr.lower()
result = "WHAT" in myStr.upper()
# 判断"what"是否在字符串内出现过,返回True或False;
# Python是大小写敏感的,可以全部转换成大写或小写来比较,此处返回True result = "X" not in myList
# 判断"X"是否不在当前列表,此处返回False result = myList.count("A")
# 判断元素"A"在列表里出现的次数,此处得到3 result = myStr.count("a")
# 判断字符"a"在字符串里出现的次数,此处得到2 index = myList.index("A")
# 获取元素"A"在列表里的索引,此处得到0 index = myList.index("A",3)
# 在列表索引3(包括索引3)开始获取元素"A"在列表里的索引,此处得到4 try:
index = myList.index("A",5,100)
except ValueError:
print("该元素不在List内")
else:
print(index)
# 当index的参数在列表或字符串并不存在,会抛异常,这里需要捕获异常再处理,此处得到10

(5) 排序

myList1 = [8, 2, 100, 23]
myList2 = ["W", "A", "X", "T"] myList1.reverse()
# 反转列表
# [23, 100, 2, 8] myList1.sort()
# 按升序排列
# [2, 8, 23, 100] myList2.sort()
# 按升序排列
# ['A', 'T', 'W', 'X'] myList1.sort(reverse=True)
# 按倒序排列
# [100, 23, 8, 2]

2. 数组

Python也有array模块,array中的类型必须全部相同,并且在声明时就要明确指定元素的类型,只支持一维数组:

import array

myArray = array.array('i', [1, 3, 5])

print(myArray)
# array('i', [1, 3, 5]) print(myArray[1])
# 3

另一个更好的选择是NumPy库的数组,它是Python数组的一个扩展,Python3.4以后的版本可以使用以下命令安装NumPy库:

pip3 install numpy

(1) 创建

import numpy as np

myArray = np.array([44, 88, 22, "ABC"])
# 直接按指定元素创建数组,当同时存在数字和字符串,会把数字当做字符串处理
# ['44' '88' '22' 'ABC'] myArray = np.arange(1, 10, 2, dtype=np.int16)
# 以1为起点,10为终点(不包括10),间隔为2,数据类型为Int16方式创建数组
# [1 3 5 7 9] myArray = np.ones((2,3), dtype=np.int16, order="C")
# # 创建一个2*3的二维数组,数组的每个元素都为"1",数据类型是Int16,存储方式按C语言的按行存储
# [[1 1 1]
# [1 1 1]] myArray = np.zeros(8, dtype=np.float, order="F")
# 创建一个长度为8的一维数组,数组元素都为"0",数据类型是Float,存储方式按Fortran语言的按列存储
# [0. 0. 0. 0. 0. 0. 0. 0.] myArray = np.empty(8, np.str, order="C")
# 创建一个长度为8的一维字符串数组,数组的每个元素都为空
# ['' '' '' '' '' '' '' ''] myArray = np.linspace(20, 100, 50, endpoint=False, retstep=False)
# 在20-100之间,取50个点
# endpoint:如果为True,则一定包括stop;如果为False,一定不包括stop
# retstep:如果为True,则返回数组和步长;如果为False,只返回数组 myRandInt = np.random.randint(5)
# 在0-5之间取一个随机数,数组中可能有"0",但不会有"5" myArray = np.random.randint(1,100,10)
# 在1-100之间生成包含10个随机数的数组,数组中可能有"1",但不会有"100"
# [41 58 55 1 94 58 36 17 84 47] myArray = np.random.randint(1,100,(2,3))
# 在1-100之间取随机数生成一个2*3的数组
# [[89 86 7]
# [67 39 58]]

(2) 添加

NumPy的数组不能动态改变大小,numpy.append()函数会新建数组,不会影响原数组。

import numpy as np

myArray1 = np.array([1, 2, 3, 4, 5])
myArray2 = np.array(["A", "B", "C"])
myList1 = [6, 7, 8]
myList2 = ["X", "Y", "Z"] print(np.append(myArray1, myArray2))
# 将myArray1和myArray2合并为一个新数组
# ['1' '2' '3' '4' '5' 'A' 'B' 'C'] newArray = np.array([], dtype=np.int16)
for i in myList1:
newArray = np.append(newArray, i)
print(newArray)
# 循环访问myList1,将每个元素添加到newArray末尾
# [6 7 8] print(np.append(myArray1, 9))
# 在myArray1末尾单独添加一个数字9
# [1 2 3 4 5 9] print(np.append(myArray2, myList2))
# 将myList2添加到myArray2末尾
# ['A' 'B' 'C' 'X' 'Y' 'Z'] print(np.concatenate((myArray1, myList1, myArray2),axis=0))
# 将两个数组,一个列表拼接起来
# ['1' '2' '3' '4' '5' '6' '7' '8' 'A' 'B' 'C'] myArray1 = np.array([[1, 2, 3], [4, 5, 6]])
myArray2 = np.array([["A", "B", "C"],["X", "Y", "Z"]])
myArray3 = np.array([["一", "二", "三"],["四", "五", "六"]]) newArray1 = np.concatenate((myArray1, myArray2, myArray3), axis=0)
print(newArray1)
# 按顺序添加三个数组的所有元素,axis=0可以省略,axis对于一维数组无效
# [['1' '2' '3']
# ['4' '5' '6']
# ['A' 'B' 'C']
# ['X' 'Y' 'Z']
# ['一' '二' '三']
# ['四' '五' '六']] newArray2 = np.concatenate((myArray1, myArray2, myArray3), axis=1)
print(newArray2)
# 依次添加三个数组的索引0的元素,然后添加索引1的元素(直到添加到最大索引处的元素)
# [['1' '2' '3' 'A' 'B' 'C' '一' '二' '三']
# ['4' '5' '6' 'X' 'Y' 'Z' '四' '五' '六']]

其它操作大致与List相同,可参考List的示例。

3. 字典

myDict = {"name":"wayne", "age":25, "skills":["java", "python", "ruby"]}

myDict["name"] = "tom"
# 新增一个元素,如果key已存在,则修改对应的value # if not myDict.get("nickname"):
if not "nickname" in myDict:
myDict["nickname"] = "mario"
# 如果字典里没有"nickname"这个key,则用指定值添加 print(myDict.keys())
# 输出所有key
# dict_keys(['name', 'age', 'skills']) print(myDict.values())
# 输出所有value
# dict_values(['tom', 25, ['java', 'python', 'ruby']]) print(myDict.items())
# 输出所有items
# dict_items([('name', 'tom'), ('age', 25), ('skills', ['java', 'python', 'ruby'])]) for k in myDict:
v = myDict.get(k)
print(k,":",v)
# 遍历整个字典
# name : tom
# age : 25
# skills : ['java', 'python', 'ruby'] newDict = myDict.copy()
# 拷贝字典
# {'name': 'tom', 'age': 25, 'skills': ['java', 'python', 'ruby']} myDict.pop("age")
# 移除key为"age"的元素
# {'name': 'tom', 'skills': ['java', 'python', 'ruby']} myDict.popitem()
# 移除最后一个元素
# {'name': 'tom'} myDict.clear()
# 清空字典
# {}

4. 集合

集合(set)里的元素是无序的,它最大的特点是没有重复元素,如果尝试添加重复元素则会被自动过滤。

mySet = set([1, 1, "A", "A", 3, 3])
print(mySet)
# {1, 'A', 3} mySet1 = set([1, 2, 3])
mySet2 = set([2, 3, 4]) # 取交集
mySet = mySet1 & mySet2
print(mySet)
# {2, 3} # 取并集
mySet = mySet1 | mySet2
print(mySet)
# {1, 2, 3, 4}

Python基础笔记(二)的更多相关文章

  1. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  2. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  3. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  4. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

  5. python基础知识(二)

    python基础知识(二) 字符串格式化 ​ 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 ​ print(' %s is boy'%('tom')) ----> ...

  6. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  7. python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建         不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上 ...

  8. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  9. 我的Python基础笔记

    Python是从刚开始参加工作,就有听各方面的测试大牛推崇,但是刚开始做测试时还是把基础的测试方法放在第一位来学习的,直到半年多以后才开始接触Python. 我的Python基础主要是以廖雪峰老师的在 ...

随机推荐

  1. create-react-app脚手架使用

    1.安装脚手架和路由 npm i -g create-react-app npm i -S react-router react-router-dom 2.创建新项目 create-react-app ...

  2. python教程2:list和tuple

    list和tuple都是数组,区别在于list可以随意增删改查,而tuple在赋值了之后只能查看了,所以tuple是比较安全的相对于list来说 list 定义一个list数组,名字就叫list,可以 ...

  3. AngularJS总结

    因为最近想学习一下ionic框架,了解到ionic是基于AngularJS语法,并且通过SASS构建应用程序,之前自己一直用Vue框架,还有Less,刚刚好趁此机会,学习一下AngularJS与SAS ...

  4. JAVA-Servlet高级应用

    会话只是指一段指定的时间间隔. 会话跟踪是维护用户状态(数据)的一种方式.它也被称为servlet中的会话管理. Http协议是一个无状态的,所以我们需要使用会话跟踪技术来维护用户状态. 每次用户请求 ...

  5. inline-block的间距问题

    张鑫旭的博客有提到,解决的方法有很多,先贴下,回头再做整理. http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove ...

  6. [R语言]关联规则1---不考虑items之间的时序关系

    本文介绍的是关联规则,分为两部分:第一部分是---不考虑用户购买的items之间严格的时序关系,每个用户有一个“购物篮”,查找其中的关联规则.第二部分--- 考虑items之间的严格的时序关系来分析用 ...

  7. div中添加滚动条

    <div style="position:absolute; height:400px; overflow:auto"></div>div 设置滚动条显示: ...

  8. linux下搭建我的世界spongeforge 服务器 (海绵端)

    以下我用的都是1.10.2版本 且以下用的服务器连接管理软件有WinSCP.Xshell 5 首先,去下载一个MC1.10.2的纯净服务端,这个不会很难,百度一下! 比如我下的文件就叫minecraf ...

  9. 转:存储之直连存储Dell Powervault MD 3000

    存储之直连存储DellPowervault MD 3000 存储根据服务器类型可以分为:封闭系统的存储和开放系统的存储 1.封闭系统的存储:封闭系统主要指大型机,AS400等服务器 2.开放系统的存储 ...

  10. 从TFS 删除工作项

    一.进入命令执行窗口的方式 1.若你的TFS服务器上安装了VS开发工作,可以按以下步骤,进入命令行方式,图如下: 2.若你TFS上没有安装VS开发工作,可以从你的开发机器上的VS安装目录下(一般情况下 ...