列表及元组

一.列表的介绍:

列表是Python数据类型之一, 其他编程语言也有类似的数据类型.比如JS中的数组,java中的数组等等,他是以 [] 括起来,每个元素用  ','  隔开,而且可以存放各种数据类型

1 lst = [1,"lx","我是",[1,'',"长时间啊"],("我叫元组",123,"lx"),"cde",{"我叫字典":48,"字典":"你好啊"},{"我叫集合","集合"}]

列表相比于字符串. 不仅可以存放不同的数据类型. ⽽且可以存放⼤量的数据. 32位 python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.⽽且列 表是有序的(按照你保存的顺序),有索引, 可以切⽚⽅便取值.

f'"{输出内容}"'     #输出结果带有 " "      例如                "输出内容"

 

f'"{el.lower()}"'

 

1.1 列表的索引与切片

列表和字符串⼀样也拥有索引:

例如:

 1 = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
 2 print(lst[0])  # 获取第一个元素
 3 print(lst[1])  # 获取第二个元素
 4 lst[0] = '马化腾'
 5 print(lst)  # 注意. 列表是可以发⽣改变的. 这⾥和字符串不⼀样
 6 # s = "第一"
 7 # s[0] = "我"
 8 # print(s)  # 字符串不能改变原字符串
 9 # TypeError: 'str' obje
10 
11 结果
12 麻花腾
13 马云
14 ['马化腾', '马云', '王健林', '许家印', '雷军', '刘强东']

列表的切片:

 1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
 2 print(lst[0:3])
 3 print(lst[:3])
 4 print(lst[::2]) #列表也有步长
 5 print(lst[::-1])  #也能到着取
 6 print(lst[-1:-5:-1])  #到着带步长
 7 
 8 #结果
 9 ['麻花腾', '马云', '王健林']
10 ['麻花腾', '马云', '王健林']
11 ['麻花腾', '王健林', '雷军']
12 ['刘强东', '雷军', '许家印', '王健林', '马云', '麻花腾']
13 ['刘强东', '雷军', '许家印', '王健林']

⼆. 列表的增删改查

1. 增, 注意, list和str是不⼀样的. lst可以发⽣改变. 所以直接就在原来的对象上进⾏了操 作

1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
2 lst.append("戴和顺")
3 lst.insert(1,"戴和顺")
4 lst.extend(["李嘉诚"]) #在原列表中末尾处追加一个序列,该序列中的所有元素都会被添加至愿列表的末尾,返回值为None
5 print(lst)

2. 删除

pop() , remove(),   clear(),   del

1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
2 lst1 = lst.pop(0) #pop() 利用索引删除元素,并返回该元素
3 print(lst1)
4 lst.remove("麻花腾")  #直接删除里面元素
5 lst.clear()  # 清空列表
6 del lst[1:3]  #  del 与切片类似
7 print(lst)

3. 修改

索引切片修改

1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
2 lst[0] = '马化腾'
3 lst[1:4:2] = "mayun","wangjianlin"  #切⽚修改也OK. 如果步⻓不是1, 要注意. 元素的个数
4 lst[1:5] = ["ninainaidetui"]  #如果切⽚没有步⻓或者步⻓是1. 则不⽤关⼼个数
5 print(lst)

4. 查询, 列表是⼀个可迭代对象, 所以可以进⾏for循环

1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
2 for et in lst:
3     print(et)

5. 其他操作

1 lst = [1,2,5,9,6,7,2,5]
2 c = lst.count(2)  # 查询次数
3 print(c)
4 lst.sort()  #按从小到大的顺序排列
5 lst.sort(reverse=True) # 按从大到小的顺序排列
6 lst.reverse()  #翻转
7 print(lst)
8 print(len(lst))  #列表长度

三. 列表的嵌套

采⽤降维操作.⼀层⼀层的看就好.

lst = ['麻花腾','马云','王健林',['xujiayin','王尼玛',['朴槿惠','奥巴马','特朗普'],'普金'],'雷军','刘强东']
#查询朴槿惠
print(lst[3][2][0])
#找到特朗普和奥巴马
print(lst[3][2][1:])
#将xujiayin首字母大写在放进去
lst[3][0] = lst[3][0].capitalize()
print(lst)
#把特朗普换成特步铺
lst[3][2][2] = "特步铺"
print(lst)
#将麻给成马
lst[0] = lst[0].replace("","")
print(lst)
#将特朗普给成傻逼
lst[3][2][2] = lst[3][2][2].replace("","傻逼")
print(lst)
lst[3][2].append("金正恩")
print(lst)

结果
朴槿惠
['奥巴马', '特朗普']
['麻花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特朗普'], '普金'], '雷军', '刘强东']
['麻花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步铺'], '普金'], '雷军', '刘强东']
['马花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步铺'], '普金'], '雷军', '刘强东']
['马花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步傻逼'], '普金'], '雷军', '刘强东']
['马花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步傻逼', '金正恩'], '普金'], '雷军', '刘强东']

四. 元组和元组嵌套

元组: 俗称不可变的列表.⼜被成为只读列表, 元组也是python的基本数据类型之⼀, ⽤⼩括 号括起来, ⾥⾯可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能 改.

tu = ('麻花腾','马云','王健林','许家印','雷军','刘强东')
print(tu)
print(tu[0])
print(tu[4])
print(tu[2:5]) #切片之后还是元组

# for循环打印元组
for el in tu:
    print(el)
# 尝试修改元组
# tu[0] = "马化腾"
# print(tu)  #TypeError: 'tuple' object does not support item assignment
# 报错  元组不能修改
# tu[1] = ["你"]  # 这样改也不行
# print(tu)
# tu[0].append("马化腾") #不能修改
# print(tu)

结果
('麻花腾', '马云', '王健林', '许家印', '雷军', '刘强东')
麻花腾
雷军
('王健林', '许家印', '雷军')
麻花腾
马云
王健林
许家印
雷军
刘强东

关于不可变, 注意: 这⾥元组的不可变的意思是⼦元素不可变. ⽽⼦元素内部的⼦元素是可 以变, 这取决于⼦元素是否是可变对象.

元组中如果只有⼀个元素. ⼀定要添加⼀个逗号, 否则就不是元组   例如:   tu = (5,)       空元组   tu = tuper()

 元组也有count(), index(), len()等⽅法.

五. range

Python2中两个

range  和  xrange

Python3中只有一个range

range      

 1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东']
 2 # 获取列表索引,拿到索引之后,可以拿到元素
 3 for el in range(len(lst)):
 4     print(el)
 5     print(lst[el])
 6 
 7 结果
 8 0
 9 麻花腾
10 1
11 马云
12 2
13 王健林
14 3
15 许家印
16 4
17 雷军
18 5
19 刘强东

 

posted @ 2018-07-31 17:40  heshun  阅读(223)  评论(0编辑  收藏  举报