Python列表、元祖、range
一、列表
str = '你好' 字符串
num = 6 整型,数字
tup = (1,2,3) ???
lst = [0,1,2,3,"周末","abcd",True,False,[01,"xing","星期"]]
列表
列表,存储一些数据,数据量比较大,列表的元素不限于数字、字符串、布尔值,包括列表。
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字,即它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
字符串是不可变数据类型
序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
下标
print(lst[4]) 结果为:周末
切片
print(lst[1:3]) 结果为:[1, 2],切片还是列表
步长
print(lst[1:7:2]) 结果为:[1, 3, 'abcd'],步长也还是列表
追加
lst = [0,1,2,3,"周末","abcd",True,False,[4,"xing","星期"]]
lst.append("星期六")
print(lst)
结果为:[0, 1, 2, 3, '周末', 'abcd', True, False, [4, 'xing', '星期'], '星期六']
迭代添加
lst.extend("week")
print(lst)
结果为:[0, 1, 2, 3, '周末', 'abcd', True, False, [4, 'xing', '星期'], 'w', 'e', 'e', 'k']
插入
lst.insert(1,"星期二")
结果为:[0, '星期二', 1, 2, 3, '周末', 'abcd', True, False, [4, 'xing', '星期']]
修改
lst = [0,1,2,3,"周末","abcd",True,False,[4,"xing","星期"]]
lst[2] = 5 #按照下标修改
print(lst)
结果为:[0, 1, 5, 3, '周末', 'abcd', True, False, [4, 'xing', '星期']]
lst = ['阿紫','阿圆','阿菲','阿彤']
lst[0:3] = '你好美'
print(lst) # 结果为 ['你', '好', '美', '阿彤']
要修改的跟被修改的数量一致,可以修改
lst[0:3] = '你好' #通过切片修改
print(lst)
# 结果为 ['你', '好', '阿彤']
要修改的数量少于跟被修改的,修改后元素减少
lst[0:3] = '阿斯顿发送'
print(lst)
# 结果为 ['阿', '斯', '顿', '发', '送', '阿彤']
要修改的数量多于跟被修改的,修改后元素增多
lst[0:4:2] = '方圆' # 切片+步长 要修改的跟被修改的数量长度要统一
print(lst)
# 结果为 ['方', '阿圆', '圆', '阿彤']
删除
del lst 直接删除列表
del lst[0] 按照下标删除
del lst[0:2] 按照切片删除
del lst[0:3:2] 按照切片+步长删除
lst[-1].remove("星期") 删除嵌套的列表的元素
lst.remove("abcd") 删除指定元素
lst.pop() 不填值默认删除最后一个元素
lst.pop(2) 按照下标删除元素
lst.clear() 清空列表
列表的查
for循环
列表嵌套
lst = ['adb','mnqp','7','后天',['超人','蜘蛛侠','必胜客',['baby','西城']]]
print(lst[4][3][0]) 结果为:baby
print(lst[-1][-1][-1]) 结果为:西城
lst[-1][-1][0] = '雪碧'
print(lst)
结果为:['adb', 'mnqp', '7', '后天', ['超人', '蜘蛛侠', '必胜客', ['雪碧', '西城']]]
lst[-2] = '香皂'
print(lst)
结果为:['adb', 'mnqp', '7', '香皂', ['超人', '蜘蛛侠', '必胜客', ['baby', '西城']]]
lst[1] = lst[1].upper()
print(lst)
结果为:['adb', 'MNQP', '7', '后天', ['超人', '蜘蛛侠', '必胜客', ['baby', '西城']]]
列表的合并
lst1 = [1,2,3]
lst2 = [4,5,6]
lst3 = lst1 + lst2 # 列表合并 开辟了一块空间
print(lst3) 结果为:[1, 2, 3, 4, 5, 6]
二、列表的函数
lst = ['阿紫','阿圆','阿菲','阿彤']
print(lst.index('阿圆')) 结果为:1 # 通过内容查找下标
print(lst.count('阿圆')) 结果为:1 # 计数
print(lst.copy()) 结果为:['阿紫', '阿圆', '阿菲', '阿彤'] # 复制
print(lst.reverse()) 结果为:None # 这是一操作,没有返回的内容
lst.reverse()
print(lst) # 变化的内容在原数据查看
结果为:['阿彤', '阿菲', '阿圆', '阿紫']
lst = [1,2,3,4,3333,0,222]
lst.sort() 结果为:[0, 1, 2, 3, 4, 222, 3333] # 排序 默认升序
lst.sort(reverse=True) # 降序
print(lst) 结果为:[3333, 222, 4, 3, 2, 1, 0]
三、元祖
一个不可修改的列表 tuple tu = () 有序的(字符串、列表也是有序的)
元祖是不可变数据,不能进行修改,存放一些用户密码,元祖其实就是一个不可以修改的列表
tup = (1,2,3,4,"末日",'hello',False)
print(tup[-1]) 结果为:False
print(tup[2:5]) 结果为:(3, 4, '末日') # 元祖切片结果也是元祖
print(tup[:5:2]) 结果为:(1, 3, '末日') # 切片+步长
print(len(tup)) 结果为:7
四、range 范围
range 第一个元素是起始位置,第二个是终止位置,第三个是步长
python3中range是原生态,Python2中range是列表
range(0,10) # 0 起始位置 ,10 终止位置
面试题:
print(range(0,10)) # python3 中range(0, 10) 是一个可迭代对象
python2 中的xrange和python3中的range是一样的,都是可迭代对象
range 获取到一个列表
print(range(0,10)) #python2中
结果为:[0,1,2,3,4,5,6,7,8,9]
print(list(range(1,10,3))) range 和切片一样
for i in range(0,10): #python3中
print(i)
结果为:0 1 2 3 4 5 6 7 8 9
print(range(0,10))
结果为:range(0, 10)
range(1,10,2) 第一个是起始位置 第二个是终止位置 第三个是步长 终止位置和切片一样都是顾头不顾尾,他们之间用逗号分开
for i in range(1,100,2): # 可以让for循环来循环数字
print(i) # 可以打印100以内的奇、偶数