代码改变世界

Python基本数据类型之列表list

2016-12-17 23:37  ZN23&24  阅读(155)  评论(0)    收藏  举报
一、列表(list)
书写格式:[]
1 #通过list类创建的
2 
3 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]  
1、列表格式
2、列表中可以嵌套任何类型
  • 中括号起来
  • ,分割每个元素
  • 列表中的元素可以是 数字,字符串,列表,布尔值....所有的都能放进去
  • "集合" ,内部放置任何东西
3、索引取值
1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 print(li[3]) #索引取值

执行结果:

1 age

 

4、切片,切片结果也是列表
1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 print(li[3:-1])  #切片,切片的结果也是列表

执行结果:

1 ['age', ['刘正文', ['19', 10], '庞麦郎'], 'ales']

5、for循环
  while循环
1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 for item in li:
3     print(item)

执行结果:

复制代码
1 1
2 12
3 9
4 age
5 ['刘正文', ['19', 10], '庞麦郎']
6 ales
7 True
复制代码

 

6、索引

  • 修改

        列表元素,可以被修改

ps1:

1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 li[1] = 120
3 print(li)

执行结果:

1 [1, 120, 9, 'age', ['刘正文', ['19', 10], '庞麦郎'], 'ales', True]

ps2:

1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 li[1] = [11,22,33,44]
3 print(li)

执行结果:

1 [1, [11, 22, 33, 44], 9, 'age', ['刘正文', ['19', 10], '庞麦郎'], 'ales', True]

 

  • 删除

        删除,第一种方式

1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 del li[1]   #删除12
3 print(li)

执行结果:

1 [1, 9, 'age', ['刘正文', ['19', 10], '庞麦郎'], 'ales', True]

 

7、切片

  • 修改
1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 li[1:3] = [120,90]   #修改12,9
3 print(li)

执行结果:

1 [1, 120, 90, 'age', ['刘正文', ['19', 10], '庞麦郎'], 'ales', True]
  • 删除
1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 del li[2:6]
3 print(li)

执行结果:

1 [1, 12, True]

 

8、in操作

    作用:判断这个元素是否在列表中

ps1:

值存在这个列表中,就是Ture

1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 v = 1 in li   #1在这个列表中,就是True
3 print(v)
1 True

 

ps2:

值不存在这个列表中,就是Flase

1 li = [1, 12, 9, "age", ["刘正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 v = 120 in li
3 print(v)

执行结果:

1 False

 

ps3:

因为在列表中的元素,以逗号做为分割,就是个整体,所以是Flase
1 li = [1, 12, 9, "age", ["史正文", ["19", 10, ],"庞麦郎"], "ales", True]
2 #因为在列表中的元素,以逗号做为分割,就是个整体,所以是Flase
3 v = "刘正文" in li    #史正文在第4个素引的列表中,所以是Flase
4 print(v)

执行结果:

1 False

 

9、操作

1 li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
2 li[4][1][0][1]  #索引取值,可以一直往里面找

 

补充知识:

只要我想把某个值,转成什么,就写上对应的类型,就可以进行转换

1 把字符串转成整型
2 
3 a = "123"    
4 int(a)   
5 a = 123
1 把整型转到字符串
2 
3 a = 123
4 str(a)

 

10、转换

1、字符串转换列表 li = list("asdfasdfasdf"), 内部使用for循环

1 s = "pouaskdfauspdfiajsdkfj"
2 new_li = list(s)
3 print(new_li)

执行结果:

1 ['p', 'o', 'u', 'a', 's', 'k', 'd', 'f', 'a', 'u', 's', 'p', 'd', 'f', 'i', 'a', 'j', 's', 'd', 'k', 'f', 'j']

2、列表转换成字符串

    需要自己写for循环一个一个处理,即有数字又有符串

1 li = [11,22,33,"123","alex"]
2 r = str(li) # 指的就是把上面列表打印出来
3 print(r)

执行结果:

1 [11, 22, 33, '123', 'alex']

 

列表转换成字符串

1 li = [11,22,33,"123","alex"]
2 s = ""
3 for i in li:
4     s = s + str(i)
5 print(s)

执行结果:

1 112233123alex

 

3、直接使用字符串join方法:列表中的元素只有字符串

1 li = ["123","alex"]
2 v = "".join(li)
3 print(v)

执行结果:

1 123alex

4、补充:

1、字符串创建后,不可修改  replace:替换

1 v = "alex"
2 v = v.replace('l','el')
3 print(v)

执行结果:

1 aelex

2、列表

复制代码
li = [11,22,33,44]
li[0]
li[0] = 999

s = "alex"
li[0]
s[0] = "E"

li = [11,22,33,44]
print(li)
print(li)
print(li)
print(li)
print(li)
print(li)
print(li)
print(li)
列表,有序;元素可以被修改

列表
list
li = [111,22,33,44]
复制代码

 

 

        列表内容的总结:

复制代码
1. 书写格式
tu = (111,"alex",(11,22),[(33,44)],True,33,44,)
一般写元组的时候,推荐在最后加入 ,
元素不可被修改,不能被增加或者删除

2. 索引
v = tu[0]
print(v)

3. 切片
v = tu[0:2]
print(v)

4. 可以被for循环,可迭代对象
for item in tu:
    print(item)

5. 转换
s = "asdfasdf0"
li = ["asdf","asdfasdf"]
tu = ("asdf","asdf")

v = tuple(s)
print(v)

v = tuple(li)
print(v)

v = list(tu)
print(v)

v = "_".join(tu)
print(v)

li = ["asdf","asdfasdf"]
li.extend((11,22,33,))
print(li)

6.元组的一级元素不可修改/删除/增加
tu = (111,"alex",(11,22),[(33,44)],True,33,44,)

元组,有序
v = tu[3][0][0]
print(v)
v=tu[3]
print(v)
tu[3][0] = 567
print(tu)
复制代码

 

 

 

列表内容的总结:

复制代码
1. 书写格式
tu = (111,"alex",(11,22),[(33,44)],True,33,44,)
一般写元组的时候,推荐在最后加入 ,
元素不可被修改,不能被增加或者删除

2. 索引
v = tu[0]
print(v)

3. 切片
v = tu[0:2]
print(v)

4. 可以被for循环,可迭代对象
for item in tu:
    print(item)

5. 转换
s = "asdfasdf0"
li = ["asdf","asdfasdf"]
tu = ("asdf","asdf")

v = tuple(s)
print(v)

v = tuple(li)
print(v)

v = list(tu)
print(v)

v = "_".join(tu)
print(v)

li = ["asdf","asdfasdf"]
li.extend((11,22,33,))
print(li)

6.元组的一级元素不可修改/删除/增加
tu = (111,"alex",(11,22),[(33,44)],True,33,44,)

元组,有序
v = tu[3][0][0]
print(v)
v=tu[3]
print(v)
tu[3][0] = 567
print(tu)
复制代码

 

二、关于列表的参数用法

1、追加 append

1 li = [11, 22, 33, 22, 44]
2 li.append(5)
3 li.append("alex")
4 li.append([1234,2323])
5 print(li)

执行结果:

1 [11, 22, 33, 22, 44, 5, 'alex', [1234, 2323]]


2、清空列表 clear

1 li = [11, 22, 33, 22, 44]
2 li.clear()   #清空列表中的值
3 print(li)

执行结果:

1 []

 

3、拷贝,浅拷贝 copy()

1 li = [11, 22, 33, 22, 44]
2 v = li.copy()
3 print(v)
4 print(li)

执行结果:

1 [11, 22, 33, 22, 44]
2 [11, 22, 33, 22, 44]

 

4、计算元素出现的次数  count

1 li = [11, 22, 33, 22, 44]
2 v = li.count(22)  #统计22出现了几次,所以是2次
3 print(v)

执行结果:

2

 

5、扩展原列表,参数,可迭代对象 extend

1 li = [11, 22, 33, 22, 44]
2 li.extend([9898,"不得了"])
3 print(li)

执行结果:

1 [11, 22, 33, 22, 44, 9898, '不得了']

 

6、根据值获取当前值索引位置(左边优先) index

1 li = [11, 22, 33, 22, 44]
2 v = li.index(22)   #从0开始数
3 print(v)

执行结果:

1 1

 

7、在指定索引位置插入元素 insert

1 li = [11, 22, 33, 22, 44]
2 li.insert(0,99)
3 print(li)

执行结果:

1 [99, 11, 22, 33, 22, 44]

 

8、删除某个值  pop 

1.指定索引

2、默认最后一个,并获取删除的值

ps1:

1 li = [11, 22, 33, 22, 44]
2 v = li.pop()
3 print(li)
4 print(v)

执行结果:

1 [11, 22, 33, 22]   #删除了44
2 44   #获取删除的值

 

ps2:

1 li = [11, 22, 33, 22, 44]
2 v = li.pop(1)  #指定删除的参数,删除第1个,从0开始数
3 print(li)
4 print(v)

执行结果:

1 [11, 33, 22, 44]
2 22

 

9、删除列表中的指定值,左边优先  remove

PS:删除的命令一共有几个
pop、remove、del li[0]、del li[7:9]、clear
1 li = [11, 22, 33, 22, 44]
2 li.remove(22)
3 print(li)

执行结果:

1 [11, 33, 22, 44]

 

10、将当前列表进行翻转 reverse

1 li = [11, 22, 33, 22, 44]
2 li.reverse()
3 print(li)

执行结果:

1 [44, 22, 33, 22, 11]

 

11、列表的排序(从大到小) sort(reverse=True)

1 li = [11, 22, 33, 22, 44]
2 li.sort()
3 li.sort(reverse=True)
4 print(li)

执行结果:

1 [44, 33, 22, 22, 11]

 

12、enumrate

为一个可迭代的对象添加序号,可迭代的对象你可以理解成能用for循环的就是可迭代的。默认是编号是从0开始,可以设置从1开始

1 li = ["手机", "电脑", "鼠标垫", "游艇"]
2 for k, i in enumerate(li,1):
3     print(k,i)

执行结果

1 1 手机
2 2 电脑
3 3 鼠标垫
4 4 游艇

 

13、欠三个,以后再讲

cmp

key

sorted