函数,列表,元组,集合,字典,None,解析

1.函数

调用方法通过名称将值传入函数的时候参数的顺序可以改变(注意改变顺序需要把所有的参数都填上),但是当有一个参数通过名称传值其右边的所有参数都需要通过名称传值,否则报错。同样当一个函数的一个参数设有默认值时其右边的所有参数都需要设置默认值。

def testParams(age, flag):
    money = 500 if flag else 5 #相当于java mony = flag ? 500 : 5
    ...

testParams(flag=False, age=1)正确
testParams(age=1, False) #错误 第二个参数也需要通过名称传值flag=False

def testParams(age, name='cheny', flag): #错误 flag也需要指定默认值

2.列表

列表的创建:
a_list = ["a", "b", "mpilgrim", "z", "example"]
获取列表的元素

a_list[0] == "a"
a_list[-1] == "example"
可以使用计算公式a_list[-n] == a_list[len(a_list) -n]

列表的切片

a_list[:3] == a_list[0:3]
a_list[:] == alist[0:len(a_list)]

向列表中新增加项的四种方式

a_list =[1]

  • a_list + [2, 'hello'] 结果为[1, 2, 'hello']
  • a_list.append([2, 'hello']) 结果为[1, [2, 'hello']]
    或者a_list.append('hello')结果为[1, 'hello']
  • a_list.extend([2, 'hello']) 结果为[1, 2 , 'hello']
    注意extend特别的地方a_list.extend('hello')结果为[1, 'h', 'e', 'l', 'l', 'o']而不是[1, 'hello']
  • a_list.insert(0, 'hello')结果为['hello', 1]

append()与extend()的区别,都只接收一个参数但是列表调用append()方法添加的只是一个对象,而extend方法添加的是一个或多个对象

在列表中检索值

a_list = ["a", "b", "new", "mpilgrim", "new"]
a_list.count('new') == 2 返回列表中某个特定值出现的次数。
a_list.index('new') == 2 只返回第一次出现的位置索引值。

从列表中删除元素

1.根据索引删除
del a_list[1] 删除列表中第二个元素
2.根据值删除
a_list.remove('new') 删除列表中第一次出现的new元素,
例如:a_list = ["a", "b", "new", "mpilgrim", "new"]执行a_list.remove('new') 后结果为["a", "b", "mpilgrim", "new"]
3.带返回值的删除
a_list.pop()或者a_list.pop(1)
pop()不带参数的调用将删除列表中最后一个元素并返回所删除的值
pop(1)类似于del a_list[1]删除列表中第二个元素,但是相比del pop(1)将会返回被删除的值。
对与空列表调用pop()将会报错

修改列表中的值

a_list = [0, 'hello']
a_list[0] = 1 结果为[1, 'hello']

布尔上下文环境中的列表

在布尔类型上下文环境中,空列表为假值。
任何至少包含一个上元素的列表为真值。

a_list = []
if a_list:
    print('True')
else:
    print('False')

False

3.元组

元组是不可变的列表。一旦创建之后,用任何方法都不可以修改元素

a_tuple = ("a", "b", "mpilgrim", "z", "example")

元组不能添加删除修改元素,没有append()、 extend()、 insert()、remove() 和 pop() 这样的方法
元组可以切片a_tuple[:2],可以查找元素a_tuple.index('example'),还可以使用in运算符检查某个元素是否存在于元组中

使用元组相比列表的优点:

  • 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表
  • 对不需要改变的数据进行“写保护”将使得代码更加安全。使用元组替代列表就像是有一条隐含的 assert 语句显示该数据是常量,特别的想法(及特别的功能)必须重写。(??)
  • 一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。

元组与列表可以相互转换。内建的 tuple() 函数接受一个列表参数,并返回一个包含同样元素的元组,而 list() 函数接受一个元组参数并返回一个列表。从效果上看, tuple() 冻结列表,而 list() 融化元组。

注意:元组使用圆括号定义( ),列表使用方括号[ ]定义。

创建单元素元组

如果创建单元素元组,需要在值之后加上一个逗号。没有逗号Python并不会创建元组。
a_tuple = ('hello') #不会创建元组
a_tuple = ('hello', ) #正确创建单元素元组

通过元组给变量同时赋多个值

(x, y, z) = ('a', '2', 'c')
输出x == ‘a’, y == '2', z == 'c'

该特性有多种用途。假设需要将某个名称指定某个特定范围的值。可以使用内建的 range() 函数进行多变量赋值以快速地进行连续变量赋值。例如:

(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)

结果:MONDAY == 1 , TUESDAY == 2,... SUNDAY ==7

说明:内建的 range() 函数构造了一个整数序列。(从技术上来说, range() 函数返回的既不是列表也不是元组,而是一个 迭代器。

4.集合

集合的创建:
a_set = {1, 2}
创建一个空集合应该使用set()函数 如:a_set = set() ,而不是a_set={}这种方式将会创建一个空字典

实际上集合以类的形式实现。
将列表转换为集合调用set()函数,例如:a_set = set(a_list) 同时也能通过list()函数将集合转为列表。
注意:调用set()函数这实际上并不是调用某个函数,而是对某个类进行实例化。

集合是无序的,使用set()函数将列表转为集合时,元素顺序将会被打乱。不仅如此,每次使用该集合时元素顺序相比上次都可能不同

例如:

a_list = ["a", "b", "mpilgrim", True, False, 42]
a_set = set(a_list)
print(a_set)

输出结果:{False, True, 42, 'b', 'mpilgrim', 'a'}
向集合中添加值

有两种方法向现有的集合中添加值:add()和update()
add()只接收单个数据类型参数
update()接收一个或多个集合,列表,元组。

集合元素是不可重复的,每个元素都是唯一值。如果添加一个集合中已有的值,只是一条空操作。

从集合中删除元素

有三种方法可以用来从集合中删除某个值。discard(),remove(),pop()
discard()与remove()都是通过值删除,唯一的区别是,当删除一个列表中不存在的值时discard()不报错,remove()报错。
pop()方法带返回值的删除。由于集合是无序的,并没有“最后一个”值的概念,因此无法控制删除的是哪一个值。它基本是随机的。

clear()方法删除集合中所有的值。相当于a_set = set()

常见集合操作

1.union() 方法返回一个新集合,其中装着 在两个 集合中出现的元素。
2.intersection() 方法返回一个新集合,其中装着 同时 在两个集合中出现的所有元素。
3.difference() 方法返回的新集合中,装着所有在a_set出现但未在b_set中的元素。
4.symmetric_difference() 方法返回一个新集合,其中装着所有 只在其中一个 集合中出现的元素 。
5.issubset()检查一个集合是否为另一个集合的子集。
6.issuperset()检查一个集合是否为另一个集合的父集。

5.字典

字典是键值对的无序集合。
字典的创建
a_dict = {"server": "db.diveintopython3.org", "database": "mysql"}
创建空字典a_dict = {}

字典的修改

a_dict = {"server": "db.diveintopython3.org", "database": "mysql"}
修改:a_dict["database"] = "blog" # {"server": "db.diveintopython3.org", "database": "blog"}
添加:a_dict["user"] = "cheny" # {"server": "db.diveintopython3.org", "database": "blog", "user": "cheny"}
1.在字典中不允许有重复的键。对现有的键赋值将会覆盖旧值
2.字典键是区分大小写的

混合值字典

字典的值可以是任何数据类型,包括整数、布尔值、任何对象,甚至是其它的字典。而且就算在同一字典中,所有的值也无须是同一类型, 您可根据需要混合匹配。字典的键要严格得多,可以是字符串、整数和其它一些类型。在同一字典中也可混合、匹配使用不同数据类型的键。

字典与列表之间同样可以通过dict()方法与list()方法相互转换

6.None

None 是 Python 的一个特殊常量。它是一个空值。None 与 False 不同。None 不是 0 。None 不是空字符串。将 None 与任何非 None 的东西进行比较将总是返回 False 。

7.列表解析

a_list = [1, 9, 8, 4]
b_list = [b * 2 for b in a_list]
print(b_list) #[2, 18, 16, 8]
b_list = [b * 2 for b in a_list if b > 1] #注意if后面的b是列表中的元素,而不是* 2之后的b,b * 2是最后执行的
print(b_list) #[18, 16, 8] 

b_list = [(b * 2, b - 1) for b in a_list if b > 1]
print(b_list) #[(18, 8), (16, 7), (8, 3)]

8.集合解析同列表解析。

9.字典解析

a_list = ['chenyou', 23, 'man']
b_list = ['name', 'age', 'sex']
a_dict = {f: a_list[index] for index, f in enumerate(b_list)}
print(a_dict) #{'name': 'chenyou', 'age': 23, 'sex': 'man'}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容