基本数据类型-----列表
一、列表(List)
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表中可以嵌套任何类型,中括号括起来,使用逗号分割每个元素,列表中的元素可以是 数字,字符串,列表,布尔值..所有的都能放进去
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
# list # 类,列表
# li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
# 通过list类创建的对象 li
-
使用索引取值
print(li[3])
-
切片,切片结果也是列表
print(li[3:-1])
-
for循环
for item in li: print(item)
- while循环
li = [11,22,33,'lee',44,'age'] c = 0 while c < len(li): print(li[c]) c = c + 1
- 修改列表元素(通过索引)
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True] li[1] = 120 print(li) li[1] = [11,22,33,44] print(li)
输出:
-
删除元素(通过索引)
del li[1] print(li)
- 修改元素(通过切片)
li[1:3] = [120,90] ##修改li[1]=120 , li[2]=90 print(li)
- 删除元素(通过切片)
del li[2:6] ##删除元素li[2]、li[3]、li[4]、li[5] print(li)
-
in 操作
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True] v1 = "石振文" in li print(v1) v2 = "age" in li print(v2)
输出:
- 取出列表中的元素
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True] v = li[4][1][0] print(v)
输出:
- 字符串类型转换为列表类型
s = "pouaskdfauspdfiajsdkfj" new_li = list(s) print(new_li)
输出:
-
列表转换成字符串,需要自己写for循环一个一个处理: 既有数字又有字符串
错误方法:
li = [11,22,33,"123","alex"]
r = str(li)
print(r)
print(type(r))
输出:
正确方法:使用for循环
li = [11,22,33,"123","alex"] s = "" for i in li: s = s + str(i) print(s)
print(type(s))
输出:
直接使用字符串join方法:列表中的元素只有字符串
li = ["123","alex"] v = "".join(li) ##jion方法也是通过循环实现的 print(v)
#le = [123,1] ##jion只适用于字符串,列表中所有元素为数字时也不可以用jion转成字符串
#w = "".join(le)
#print(w)
输出:
补充:字符串创建后,不可修改(以下的替换是生成了一个新的字符串aelex,占用了新的内存单元)
v = "alex" v = v.replace('l','el') print(v)
s = "alex"
s[0] = 1 ##不能使用这种方法修改字符串中的某个字符
输出:
二、python中列表的函数&方法
函数:
方法:
1.在原来值的最后追加
#li对象调用append方法 li = [11, 22, 33, 22, 44] li.append(5) ##这里不用使用新的变量来接收 li.append("alex") li.append([1234,2323]) print(li)
输出:
2.清空列表
li = [11, 22, 33, 22, 44] li.clear() print(li)
输出:
3.拷贝(浅拷贝)
li = [11, 22, 33, 22, 44] v = li.copy() print(li) print(v)
输出:
4.计算元素出现的个数
li = [11, 22, 33, 22, 44] v = li.count(22) print(v)
输出:
5. 扩展原列表,参数:可迭代对象
li = [11, 22, 33, 22, 44] li.extend([9898,"不得了"]) ##使用for循环将可迭代对象放入 print(li)
输出:
这个方法的实现过程同下面的代码等价:
li = [11, 22, 33, 22, 44] for i in [9898,"不得了"]: li.append(i) print(li)
输出:
append和extend的比较:
li = [11, 22, 33, 22, 44] li.append([9898,"不得了"]) print(li)
输出:(这个使用的是append方法,直接将列表这个整体追加到最后)
6. 根据值获取当前值索引位置(左边优先)
li = [11, 22, 33, 22, 44] v= li.index(22) print(v)
输出:
7. 在指定索引位置插入元素
li = [11, 22, 33, 22, 44] li.insert(0,99) ##在li[0]处插入99 print(li)
输出:
8.删除某个值(1.指定索引;2. 默认最后一个),并获取删除的值
li = [11, 22, 33, 22, 44] v = li.pop() ##不添加参数默认删除最后一个元素 print(li) print(v)
输出1:
li = [11, 22, 33, 22, 44] v = li.pop(1) print(li) print(v)
输出2:
9. 删除列表中的指定值,左边优先
li = [11, 22, 33, 22, 44] li.remove(22) print(li)
输出:
PS: pop remove del li[0] del li[7:9] clear ##这些方法都可以实现元素的删除
10.将当前列表进行翻转
li = [11, 22, 33, 22, 44] li.reverse() print(li)
输出:
11.列表的排序
li = [11,44, 22, 33, 22] li.sort() li.sort(reverse=True) print(li)
输出: