python基本数据类型之列表
列表简介
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list1 = ['Google', 'Runoob', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; list3 = ["a", "b", "c", "d"];
list的基本功能
- 结果类型 中括号括起来
- 逗号(,)分割每一个元素
- 列表中的元素可以是数字,字符串,列表,布尔值所有的都能放
- 索引,切片
li = [1, 3, 5,, ["史正文",18],"cat"] print(li[1]) # 索引取值 print(li[2:4]) # 切片取值(切片的结果也是列表)
- 支持for循环
li = [1, 3, 5, "jianer", ["文文",18],"cat"] for item in li: # for循环列表 print(item)
- 索引删除,切片删除
li = [1, 3, 5, "jianer", ["儿",18],"cat"] del li[0] # 索引删除 print(li) del li[0:3] # 切片删除 print(li)
- 索引修改,切片修改
li = [1, 3, 5, ["尖儿",18],"cat"] li[0] = 88 # 索引修改 print(li) li[0:3] = 7,8,9 # 切片修改 print(li)
- in操作
li = [1, 3, 5, "jianer", ["病毒尖儿",18],"cat"] v = 3 in(li) # in操作 print(v) 在的列表里面返回一个True 不在返回Flase
- 索引找值
li = [1, 3, 5, "jianer", ["病毒尖儿",18],"cat"] v = li[4][0][2] # 索引找并打印 print(v)
转换
- 列表转换成字符串
- 需要自己写for循环一个一个处理:既有数字又有字符串
- 直接使用字符串join方法:只有字符串
list的方法(魔法)
-
需要记忆的魔法有:append(追加),extend(扩展),insert(插入)
append 原来值最后追加,数字,字符,列表都可以进行追加
# ###################灰魔法:list 类中提供的方法 ################## # 1、原来的值最后追加 append # 对象 方法(。。) # 变量 li 对象调用append方法 里面的元素叫参数 # li = [11, 22, 33, 44, 22] # li.append(99) # print(li) #2、清空列表 clear # li = [11, 22, 33, 44, 22] # li.clear() # print(li) # 3、拷贝 ,浅拷贝 copy # li = [11, 22, 33, 44, 22] # v = li.copy() # print(v) # 4、计算列表中元素出现的次数 count # li = [11, 22, 33, 44, 22] # v = li.count(22) # print(v) # 5、扩展原列表 ,参数 :可迭代对象 # li = [11, 22, 33, 44, 22] # li.append([222]) # print(li) # li = [11,22,33,22,44] # li.extend(["alex",998]) # print(li) # 用for循环extend后面加的参数循环打印加到列表里 # # 例如 : # li.extend("alex") # print(li) # 6、根据值获取当前值索引的位置 (左边优先) # li = [11, 22, 33, 44, 22] # v = li.index(33) # print(v) # 7、在指定索引位置插入元素 # li = [11, 22, 33, 44, 22] # li.insert(0,22) # print(li) # 8、删除某个值(1、指定索引 : 2、默认最后一个)并获取删除的值 # li = [11, 22, 33, 44, 22] # v = li.pop(3) # print(v) # print(li) # 9、删除列表中的指定值,左边优先 # li = [11, 22, 33, 44, 22] # li.remove(22) # print(li) # PS :pop remove del li[0] del li[7:9] clear #都是删除 # 10、将列表中进行反转 # li = [11, 22, 33, 44, 22] # li.reverse() # print(li) # 11、列表的排序 # li = [1,77,55,99,22,] # li.sort() #默认从小到大排序 # li.sort(reverse= True) # 从大到小排序 # print(li) list 用法和注意事项
Python的列表推导式
列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。
它的结构是在一个中括号里包含一个表达式,然后是一个for
语句,然后是0个或多个for
或者if
语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以if
和for
语句为上下文的表达式运行完成之后产生。
规范
variable = [out_exp for out_exp in input_list if out_exp == 2]
这里是另外一个简明例子:
multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
这将对快速生成列表非常有用。
有些人甚至更喜欢使用它而不是filter
函数。
列表推导式在有些情况下超赞,特别是当你需要使用for
循环来生成一个新列表。举个例子,你通常会这样做:
squared = [] for x in range(10): squared.append(x**2)
你可以使用列表推导式来简化它,就像这样:
squared = [x**2 for x in range(10)]
一句话生成九九乘法表
1 print('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))