Python基本数据类型List(列表)
List(列表)
是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。

加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
实例
#!/usr/bin/python3 list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ] tinylist = [123, 'runoob'] print (list) # 输出完整列表 print (list[0]) # 输出列表第一个元素 print (list[1:3]) # 从第二个开始输出到第三个元素 print (list[2:]) # 输出从第三个元素开始的所有元素 print (tinylist * 2) # 输出两次列表 print (list + tinylist) # 连接列表
以上实例输出结果:
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
与Python字符串不一样的是,列表中的元素是可以改变的:
实例
>>>a = [1, 2, 3, 4, 5, 6] >>> a[0] = 9 >>> a[2:5] = [13, 14, 15] >>> a [9, 2, 13, 14, 15, 6] >>> a[2:5] = [] # 将对应的元素值设置为 [] >>> a [9, 2, 6]
List 内置了有很多方法,例如 append()、pop() 等等,这在后面会讲到。
注意:
- 1、List写在方括号之间,元素用逗号隔开。
- 2、和字符串一样,list可以被索引和切片。
- 3、List可以使用+操作符进行拼接。
- 4、List中的元素是可以改变的。
Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:

优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
2、切片(顾头不顾尾,步长)
3、长度
4、成员运算in和not in
5、追加
6、删除
7、循环
l=[1,2,3,5,6,7] #1、按索引存取值(正向存取+反向存取):即可存也可以取 #正向步长 a=l[0:3:2] print(a) #[1, 3] #反向步长 b=l[2::-1] print(b) #[3, 2, 1] d=l[::-2] print(d) #[7, 5, 2] #2、切片操作的一般模式是[start:end],start 和 end 所指的都是索引,截取时,end索引位置的元素不会被截取,这一点尤其要注意 lst = [3, 4, 1, 4, 2, 5, 8] print(lst[3:6]) #[4, 2, 5] #倒序索引切片 print(lst[2:-2]) #[1, 4, 2] #指定开始位置,不指定结束位置,从2开始取到结尾 print(lst[2:]) #[1, 4, 2, 5, 8] #指定结束位置,不指定开始位置,从0开始取到4 print(lst[:5]) #[3, 4, 1, 4, 2] #3、长度len print(len(l)) #6 #4、in、not in if 3 in l: print(True) #True if 'a' not in l: print('a') #a #5、追加、添加 l.append('a') #添加,放在最后面 print(l) #[1, 2, 3, 5, 6, 7, 'a'] l.insert(1,0) #插入,在第1个元素插入0 print(l) #[1, 0, 2, 3, 5, 6, 7, 'a'] l.extend((4,8)) #末尾添加分开的元组 print(l) #[1, 0, 2, 3, 5, 6, 7, 'a', 4, 8] #6、删除 #del删除索引指定位置的元素,可以是一个索引范围 del l[1] print(l) #[1, 2, 3, 5, 6, 7, 'a', 4, 8] del l[:1] print(l) #pop删除,删除指定索引位置的元素,若未添加索引,则删除最后一位 l.pop() print(l) l.pop(1) print(l) #remove,删除一个目标值,目标值不在列表或填空都会报错 l.remove(7) print(l) #清空列表 l.clear() #7、循环,for遍历循环 for i in l: print(i) #while循环列表 i=1 while i <= len(l): print(i) i+=1 #9、求最大\最小值\平均值 maxl=max(l) minl=min(l) print(maxl,minl) #平均值需要导入numpy模块(要安装) from numpy import * aver=mean(l) #10、查询目标值出现的次数 #如果括号里的元素是字符串,记得加单引号 n=l.count(7) #11、输入的字符串直接用map、eval函数转成列表 #以空格隔开输入一组整形数据 st=list(map(int,input('-->').split())) print(st) #以逗号隔开输入一组整形数据 st1=list(map(str,input('-->').split(','))) print(st1) 结果如下: -->90 49 30 [90, 49, 30] -->a,b,c ['a', 'b', 'c'] -->(1,2),[1,2] [(1, 2), [1, 2]] #12、列表转字符串 #注意列表元素必需全为字符串,否则报错 strli='' li=['a','b','c'] c=strli.join(li) print(c) #abc #字符串转列表 li1=list(c) print(li1) #['a', 'b', 'c']
练习:
1. 有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量 2. 用列表模拟队列 3. 用列表模拟堆栈 4. 有如下列表,请按照年龄排序(涉及到匿名函数) l=[ {'name':'alex','age':84}, {'name':'oldboy','age':73}, {'name':'egon','age':18}, ] 答案: l.sort(key=lambda item:item['age']) print(l)
补充:
l.sort() 从小到大排序
l.sort(reverse=True) 从大大小排序
如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:
实例
def reverseWords(input):
# 通过空格将字符串分隔符,把各个单词分隔为列表
inputWords = input.split(" ")
# 翻转字符串
# 假设列表 list = [1,2,3,4],
# list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
# inputWords[-1::-1] 有三个参数
# 第一个参数 -1 表示最后一个元素
# 第二个参数为空,表示移动到列表末尾
# 第三个参数为步长,-1 表示逆向
inputWords=inputWords[-1::-1]
# 重新组合字符串
output = ' '.join(inputWords)
return output
if __name__ == "__main__":
input = 'I like runoob'
rw = reverseWords(input)
print(rw)
# 通过空格将字符串分隔符,把各个单词分隔为列表
inputWords = input.split(" ")
# 翻转字符串
# 假设列表 list = [1,2,3,4],
# list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
# inputWords[-1::-1] 有三个参数
# 第一个参数 -1 表示最后一个元素
# 第二个参数为空,表示移动到列表末尾
# 第三个参数为步长,-1 表示逆向
inputWords=inputWords[-1::-1]
# 重新组合字符串
output = ' '.join(inputWords)
return output
if __name__ == "__main__":
input = 'I like runoob'
rw = reverseWords(input)
print(rw)
输出结果为:
runoob like I

浙公网安备 33010602011771号