学习笔记中的源码:传送门

3.1 列表和元组的介绍

3.2

不同类型变量的初始化:

数值
digital_value = 0
字符串
str_value = "" 或 str_value = ”
列表
list_value = []
字典
ditc_value = {}
元组
tuple_value = ()

列表的切片:

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
实现功能
实现方法(区间相当与左闭右开)
取前3个元素
>>> [L[0], L[1], L[2]]
['Michael', 'Sarah', 'Tracy']
取前N个元素
>>> r = []
>>> n = 3
>>> for i in range(n):
... r.append(L[i])
... >>> r
['Michael', 'Sarah', 'Tracy']
取前3个元素
(切片)
>>> L[0:3]
['Michael', 'Sarah', 'Tracy']
 
如果第一个索引是0,还可以省略:
>>> L[:3]['Michael', 'Sarah', 'Tracy']
从索引1开始,取出2个元素
>>> L[1:3]['Sarah', 'Tracy']
取倒数第一个元素
L[-1](注:最后一个元素的索引是-1)
取倒数第二个元素
L[-2:-1]
后10个数
倒序输出列表
 L[-10:]
L[::-1]

列表和元组的通用用法:

可以使用索引,如L[0];

可以进行加法+、乘法*;

a_tuple = ('crazyit', 20, -1.2)
b_tuple = (127, 'crazyit', 'fkit', 3.33)
print(a_tuple + b_tuple) # ('crazyit', 20, -1.2, 127, 'crazyit', 'fkit', 3.33)
print(a_tuple) # ('crazyit', 20, -1.2) a_tuple并没有被改变
print(b_tuple) # (127, 'crazyit', 'fkit', 3.33) b_tuple并没有被改变 输出结果:
('crazyit', 20, -1.2, 127, 'crazyit', 'fkit', 3.33)
('crazyit', 20, -1.2)
(127, 'crazyit', 'fkit', 3.33)

in运算符(用于判断列表或元组是否包含某个元素);

a_tuple = ('crazyit', 20, -1.2)
print(20 in a_tuple)
print(1.2 in a_tuple) 输出结果:
True
False

可以使用内置函数len(),max(),min()获取元组或列表的长度、最大值和最小值;

# 元素都是数值的元组
a_tuple = (20, 10, -2, 15.2, 102, 50)
# 计算最大值
print(max(a_tuple))
# 计算最小值
print(min(a_tuple))
# 计算长度
print(len(a_tuple))
# 元素都是字符串的列表
b_list = ['crazyit', 'fkit', 'python', 'kotlin']
# 依次比较每个字符的 ASCII 码值
print(max(b_list))
print(min(b_list))
print(len(b_list)) 输出结果:
102
-2
6
python
crazyit
4

序列封包和序列解包:

# 序列封包:将10,20,30封装成元组后赋值给vals
vals = 10, 20, 30 # 把多个值赋给一个变量时,python程序会自动将多个值封装成元组
print(vals)
print(type(vals))
print(vals[1])
# 序列解包:将a_tuple元组的个各元素依次赋值给a,b,c,d,e变量
a_tuple = tuple(range(1, 10, 2))
a, b, c, d, e = a_tuple
print(a, b, c, d, e)
a_list = ['fkit', 'crazyit']
# 序列解包,将a_lis序列的各元素依次赋值给a_str,b_str
a_str, b_str = a_list
print(a_str, b_str)
# 序列解包时只分解出部分变量,剩下的依然使用列表变量保存
first, second, *rest = range(10) # * 表示该变量为一个列表
print(first)
print(second)
print(rest) 输出结果:
(10, 20, 30)
<class 'tuple'>
20
1 3 5 7 9
fkit crazyit
0
1
[2, 3, 4, 5, 6, 7, 8, 9]

3.3 使用列表

创建列表:a.使用方括号创建列表 b.使用list(),list()函数可将元组、区间(range)等对象转为列表(类似地,tuple() 函数可将列表、区间(range)等对象转为元组)

增加列表元素:append()    extend()    insert()

a_list = ['crazyit', 20, -2]
a_list.append('fkit')
print(a_list)
a_tuple = (3.4, 5.6)
a_list.append(a_tuple) # 追加元组,元组被当作一个元素
print(a_list)
a_list.append(['a', 'b']) # 追加列表,列表被当作一个元素
print(a_list) b_list = ['a', 30]
b_list.extend((-2, 3.1)) # 追加元组中的所有元素
print(b_list)
b_list.append(['C', 'R', 'A']) # 追加列表中的所有元素
print(b_list) c_list = list(range(1, 6))
print(c_list)
c_list.insert(3, 'CRAZY') # 在索引3处增加一个字符串
print(c_list)
c_list.insert(3, tuple('crzay')) # 在索引3处增加一个元组,元组被当作一个元素
print(c_list) 输出结果:
['crazyit', 20, -2, 'fkit']
['crazyit', 20, -2, 'fkit', (3.4, 5.6)]
['crazyit', 20, -2, 'fkit', (3.4, 5.6), ['a', 'b']]
['a', 30, -2, 3.1]
['a', 30, -2, 3.1, ['C', 'R', 'A']]
[1, 2, 3, 4, 5]
[1, 2, 3, 'CRAZY', 4, 5]
[1, 2, 3, ('c', 'r', 'z', 'a', 'y'), 'CRAZY', 4, 5]

删除列表元素:del  clear()

修改列表元素:

列表的其他常用方法:

"""count():用于统计列表中某个元素的出现次数"""
a_list = [2, 30, 'a', [5, 30], 30]
print(a_list.count(30)) # 计算列表中30出现的次数
print(a_list.count([5, 30])) # 计算列表中[5,30]出现的次数 输出结果:
2
1 """index()用于判断某个元素在列表中的出现位置"""
a_list = [2, 30, 'a', 'b', 'crazyit', 30]
print(a_list.index(30)) # 定位30元素出现的位置
print(a_list.index(30, 2)) # 从2开始,定位30出现的位置
print(a_list.index(30, 2, 4)) # 在索引2和4之间定位30出现的位置,找不到该元素 ValueError 输出结果:
Traceback (most recent call last):
File "D:/myproject/crazy_python/03/3.3/index_test.py", line 10, in <module>
print(a_list.index(30, 2, 4)) # 在索引2和4之间定位30出现的位置,找不到该元素 ValueError
ValueError: 30 is not in list
1
5 """关于栈(先入后出),python中没有push()方法,可使用append()代替"""
stack = []
stack.append('fkit')
stack.append('crazyit')
stack.append('mengmeng')
print(stack)
print(stack.pop())
print(stack) 输出结果:
['fkit', 'crazyit', 'mengmeng']
mengmeng
['fkit', 'crazyit'] """reverse: 将列表中的元素反向存放"""
a_list = list(range(1,8))
a_list.reverse()
print(a_list)
输出结果:
[7, 6, 5, 4, 3, 2, 1] """sort(): 用于对列表元素排序"""
a_list = [3, 4, -2, 30, 14, 9.3, 3.4]
a_list.sort()
print(a_list)
b_list = ['python', 'swift', 'ruby', 'go']
b_list.sort() # 默认按字符串包含的字符的编号来比较大小
print(b_list) b_list.sort(key=len, reverse=True) # key指明排序规则,reverse=True表示从大到小
print(b_list)
输出结果:
[-2, 3, 3.4, 4, 9.3, 14, 30]
['go', 'python', 'ruby', 'swift']
['python', 'swift', 'ruby', 'go']

3.4使用字典  字典格式: dict = {key:value,....}

字典入门:

字典的基本用法:

"""
字典的基本用法:
通过key访问value
通过key添加key-value对
通过key删除key-value对
通过key修改key-value对
通过key判断指定key-value是否存在
"""
scores = {'语文': 89}
# 通过key访问value,字典的key就相当于它的索引,只不过这些索引不一定是整数类型,可以是任意不可变类型
print(scores['语文'])
# 对不存在的key赋值,就是增加key-value对
scores['数学'] = 93
scores[92] = 5.7
print(scores)
# 使用del删除key-value对
del scores['语文']
del scores['数学']
print(scores)
# 对存在的key-value对赋值,改变key-value对
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
cars['BENS'] = 4.3
print(cars)
# 判断cars是否包含名为AUDT的key
print('AUDT' in cars)
print('PORSCHE' in cars) 输出结果:
"""
字典的基本用法:
通过key访问value
通过key添加key-value对
通过key删除key-value对
通过key修改key-value对
通过key判断指定key-value是否存在
"""
scores = {'语文': 89}
# 通过key访问value,字典的key就相当于它的索引,只不过这些索引不一定是整数类型,可以是任意不可变类型
print(scores['语文'])
# 对不存在的key赋值,就是增加key-value对
scores['数学'] = 93
scores[92] = 5.7
print(scores)
# 使用del删除key-value对
del scores['语文']
del scores['数学']
print(scores)
# 对存在的key-value对赋值,改变key-value对
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
cars['BENS'] = 4.3
print(cars)
# 判断cars是否包含名为AUDT的key
print('AUDT' in cars)
print('PORSCHE' in cars)

字典的常用用法:

clear():

"""clear():清空cars的所有key-value对"""
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
print(cars)
cars.clear()
print(cars)
输出结果:
{'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
{}

get():

"""get(): 根据key来获取value,用法相当于[]语法,区别在于方括号语法访问不存在的key时会报错KeyError,get()只是返回None,不会报错"""
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
print(cars.get('BMW'))
print(cars.get('PORSCHE'))
print(cars['PORSCHE']) 输出结果:
8.5
Traceback (most recent call last):
None
File "D:/myproject/crazy_python/03/3.4/get_test.py", line 8, in <module>
print(cars['PORSCHE'])
KeyError: 'PORSCHE'

update():

# update()执行时,若key-value已存在则被覆盖,不存在则被添加到字典
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
cars.update({'BMW': 4.5, 'PORSCHE': 9.3})
print(cars)
输出结果:
{'BMW': 4.5, 'BENS': 8.3, 'AUDT': 7.9, 'PORSCHE': 9.3}

items()、keys()、values():

cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
# 获取字典中的所有key-value对,返回一个dict_items对象
ims = cars.items()
print(ims)
print(type(ims))
print(list(ims)) # 将dict_items转换为列表
print(list(ims)[2]) # 访问第二个key-value对
# 获取字典中的所有key,返回一个dict-keys对象
kys = cars.keys()
print(kys)
print(type(kys))
print(list(kys)) # 将dict-keys转换成列表
print(list(kys)[1]) # 访问第二个key
# 获取字典中的所有value,返回一个dict-values对象
vals = cars.values()
print(vals)
print(type(vals))
print(list(vals)) # 将dict-values转换为列表
print(list(vals)[1]) # 访问第2个value
输出结果:
dict_items([('BMW', 8.5), ('BENS', 8.3), ('AUDT', 7.9)])
<class 'dict_items'>
[('BMW', 8.5), ('BENS', 8.3), ('AUDT', 7.9)]
('AUDT', 7.9)
dict_keys(['BMW', 'BENS', 'AUDT'])
<class 'dict_keys'>
['BMW', 'BENS', 'AUDT']
BENS
dict_values([8.5, 8.3, 7.9])
<class 'dict_values'>
[8.5, 8.3, 7.9]
8.3

pop() :获取指定key的value,并删除这个key-value对

popitem():随机弹出字典中的一个key-value对

setfault()

cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
print(cars.pop('AUDT'))
print(cars)
输出结果:
7.9
{'BMW': 8.5, 'BENS': 8.3} cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
print(cars)
print(cars.popitem()) # 弹出字典底层存储的最后一个key-value对,是个元组
print(cars)
# 将弹出项的key、value分别赋值给k、v
k, v = cars.popitem()
print(k, v)
输出结果:
{'BMW': 8.5, 'BENS': 8.3, 'AUDT': 7.9}
('AUDT', 7.9)
{'BMW': 8.5, 'BENS': 8.3}
BENS 8.3
"""setfault():用于根据key来获取对应的value值。如果该key-value存在,则直接返回key对应的value;如果该key-value不存在,则先为该key设置默认的value,然后再返回key对应的value"""
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
print(cars.setdefault('PORSCHE', 9.2))
print(cars)
print(cars.setdefault('BMW', 3.4))
print(cars)
输出结果:
9.2
{'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9, 'PORSCHE': 9.2}
8.5
{'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9, 'PORSCHE': 9.2}

控制字典中元素的顺序

from collections import OrderedDict
d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
d['spam'] = 3
d['grok'] = 4
for key in d:
print(key,d[key]) 输出结果:
foo 1
bar 2
spam 3
grok 4

python学习-列表、元组和字典(三)的更多相关文章

  1. Python学习-列表元组字典操作

    一.列表 列表是Python的基本数据类型之一,它是以 [] 括起来的,内部成员用逗号隔开.里面可以存放各种数据类型. # 例如: list2 = ['jason', 2, (1, 3), ['war ...

  2. python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝

    一.深浅拷贝 1.  值拷贝 ls1 = ls2  不开辟空间,指针跟着走.(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变.)(ls1内部的所有类型的值发生改变,l ...

  3. Python学习---列表/元组/字典/字符串/set集合/深浅拷贝1207【all】

    1.列表 2.元组 3.字典 4.字符串 5.set集合 6.深浅拷贝

  4. Python—列表元组和字典

    Python-列表元组和字典 列表 元组 字典 列表: 列表是Python中的一种数据结构,他可以存储不同类型的数据.尽量存储同一种类型 列表索引是从0开始的,我们可以通过索引来访问列表的值. 列表的 ...

  5. 【python学习笔记】4.字典:当索引不好用时

    [python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...

  6. python 将列表里的字典元素合并为一个字典

    python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...

  7. Python学习---列表,元组,字典

    ### 列表 list = [1,2,3,4,5,6] list.append(7) print(list) ===>>> [1, 2, 3, 4, 5, 6, 7] list[2] ...

  8. python字符串/列表/元组/字典之间的相互转换(5)

    一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...

  9. python 中列表 元组 字典 集合的区别

    先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...

  10. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

随机推荐

  1. Jmeter介绍和安装

    Apache JMeter™应用开源软件,100%纯Java应用程序,设计用于负载功能测试和性能测试.它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数中. 安装步骤:1.安装JDK 8版 ...

  2. jvm 内存溢出

    堆内存溢出 堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java heap space 永久代溢出 类的一些信息,如类名.访 ...

  3. 简单粗暴的关键两部实现连接远程云服务器数据库SqlServer 2012

    要连上远程服务器的数据库,前面的那些数据库配置就不说了,网上都一样. 下面讲讲关键的两点,也是我尝试普通的方法无效后通过下面的方法成功连上的. 1.点开云服务器的安全组,看看里面的端口是否都放行了.我 ...

  4. js控制input框输入数字时,累计求和

    input框输入数字时,自动开始计算累加 <div class="form-group"> <label for="inputPassword3&quo ...

  5. 使用python asyncio+aiohttp做接口测试(TODO)

    线程是操作系统层面的“并行”, 协程是应用程序层面的“并行”. 协程本质上就是:提供一个环境,保存一些需要等待的任务,当这些任务可以执行(等待结束)的时候,能够执行.再等待的过程中,程序可以执行别的任 ...

  6. 删除pdf中的链接

    在Acrobat中打开pdf文件,然后:编辑→首选项→一般→自动从文本检测URL,把此处的对勾去掉,以后就不会变为食指按的形状了! 还有以下的方法 方法1:“高级(A)”→“链接(L)”→“删除文档中 ...

  7. 性能测试:Jmeter-Beanshell请求加密实例

    进行性能测试时,有可能遇到一种场景:接口请求由于安全问题,需要进行加密发送. 这种场景下,使用Jmeter实现性能测试,则也需要使用同样的加密规则发送请求报文. 要实现此类性能测试有几种策略: 直接去 ...

  8. DeleteFile

    import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apac ...

  9. 一行命令安装docker和docker-compose(CentOS7)

    想快速装好docker和docker-compose ?那就随本文用一次复制粘贴来完成安装: 环境信息 操作系统:CentOS Linux release 7.7.1908 (Core, 操作账号:r ...

  10. Hadoop点滴-Hadoop的IO

    Hadoop自带一套原子操作用于数据的I/O操作. 如果系统中需要处理的数据量达到Hadoop的处理极限时,数据被损害的概率还是很高的 检测数据是否被损害的常见措施是,在数据第一次被引进系统时,计算校 ...