python:数据类型( list tuple )

practice

一、列表

  1.什么是列表

       列表由 [] 来表示,每一项元素用逗号隔开.
      列表什么都能装(也可以装列表),能装对象的对象.
      列表可以装大量的数据,可以嵌入列表 如下:

lst=["移动硬盘","手机",110,True,False,["人民币","欧元"]]

  2.列表的索引和切片  (用法同字符串类似)

    列表和字符串是一样的,也有索引和切片

    切出来的内容是列表

    索引的下标从0开始

    lst[起始位置:结束位置:步长]

1 lst=["海上钢琴师","奥特曼","咒怨","舌尖上的中国","穹顶之下","金刚"]
2 print(lst[3])  #舌尖上的中国
3 print(lst[3][2])  #
4 print(lst[-2])  #穹顶之下
5 print(lst[1:4])  #['奥特曼', '咒怨', '舌尖上的中国']
6 print(lst[-3:-1]) #['舌尖上的中国', '穹顶之下']  #顾头不顾尾
7 print(lst[-1:-5:-2])  #['金刚', '舌尖上的中国']
View Code

  3.列表的增删改查

    1) 增加       .append()       .insert()        .extend()  数字和bool(非迭代对象)不可以迭代添加,

1 lst.append("xx")  #只能添加一个  lst.append("xx","xx")是错误的
2 lst.insert(index,"xx")  #指定位置插入
3 lst.exteng("xx")  #在结尾处分开迭代添加
4 lst.extend(["xx","xxx"])  #在结尾处整体添加  需要添加[]

 

 1 lst=["赵四","施瓦星格","黄渤","郭达森","赛利亚"]
 2 
 3 lst.append("黄宏")
 4 print(lst)
 5 #输出:['赵四', '施瓦星格', '黄渤', '郭达森', '赛利亚', '黄宏']
 6 
 7 lst.insert(1,"麻花藤")
 8 print(lst)
 9 #输出:['赵四', '麻花藤', '施瓦星格', '黄渤', '郭达森', '赛利亚']
10 
11 lst.extend("麻花藤")
12 print(lst)
13 #输出:['赵四', '施瓦星格', '黄渤', '郭达森', '赛利亚', '麻', '花', '藤']
14 
15 lst.extend(["麻花藤","马云"]) #在结尾处整体添加  需要添加[]
16 print(lst)
17 #['赵四', '施瓦星格', '黄渤', '郭达森', '赛利亚', '麻花藤', '马云']
View Code

    2) 删除      

         .pop()         默认删除最后一个,有索引则按索引位置删除   可以有返回值     

         .remove()       

          del  lst [ ] 切片删除   通过下标删除    

         .clear() 清空

 1 lst=["赵四","施瓦星格","黄渤","郭达森","赛利亚"]
 2 
 3 # 1.pop()
 4 data=lst.pop(2)  #返回被删除的数据
 5 print(data)
 6 print(lst)
 7 
 8 # 2.remove()
 9 lst.remove("赵四")  #删除指定元素
10 lst.remove("刘能")  #如果不存在会报错
11 
12 # 3.切片删除   删除切片中的内容
13 del lst[1:3]
14 print(lst)  #输出:['赵四', '郭达森', '赛利亚']
15 
16 # 4.清空  删除所有的元素
17 lst.clear()
18 print(lst)  #输出:[]
View Code

    3) 改     索引改和切片改

      普通修改(索引修改):   lst [index]=="xx"     需要记住

      切片修改: 1) 步长为1时, 直接替换掉切片中的内容  (替换元素为多少个都可以)

            2) 步长不为1时, 替换的元素与切片中元素的个数保持一致

 1 lst=["王者荣耀","魔兽世界","DNF","逆水寒","反恐精英"]
 2 #普通修改
 3 lst[0]="扫雷"
 4 lst[3]="吃鸡"
 5 print(lst)
 6 #输出:['扫雷', '魔兽世界', 'DNF', '吃鸡', '反恐精英']
 7 
 8 #切片修改时.如果步长为1,会直接替换掉切片内容
 9 lst[1:3]="跑跑卡丁车" #"魔兽世界","DNF"会替换为 '跑', '跑', '卡', '丁', '车'
10 print(lst)
11 #输出:['王者荣耀', '跑', '跑', '卡', '丁', '车', '逆水寒', '反恐精英']
12 
13 lst[1:3]=["跑跑卡丁车"]  #添加[]  作为整体替换掉切片内容
14 print(lst)
15 #输出:['王者荣耀', '跑跑卡丁车', '逆水寒', '反恐精英']
16 
17 #切片修改时.如果步长不为1,注意元素的个数需保持一致
18 lst[1::2]=["QQ华夏","QQ三国"]
19 print(lst)
20 #输出:['王者荣耀', 'QQ华夏', 'DNF', 'QQ三国', '反恐精英']
21 lst[1::2]=["QQ华夏"]  #切片内容有2个"魔兽世界""逆水寒",
22 print(lst)  #会报错
View Code

    4) 查   (可用于循环和索引)

        用 for 循环查

1 lst=["锅包肉","火锅","巫山烤鱼","清水煮白菜","烤鸭"]
2 for el in lst:  #el为element
3     print(el)

    5)常用的操作

      .sort()          # 排序  默认是升序    .sort( reverse==True )   # 降序

      .reverse()    # 翻转

      len( )           # 求列表的长度    内置函数可用于很多  比如 :   str   tuple 

      count()        #计数

1 lst=[1,5,3,4,3,2,44,3,2,22]
2 lst.sort()   #正序
3 lst.sort(reverse=True)  #降序
4 
5 lst=["晓雪","小茹","小花","晓梅"]
6 lst.reverse()  #翻转
7 print(lst)   #输出:['晓梅', '小花', '小茹', '晓雪']
8 print(len(lst))  #输出:4
View Code

  4.列表的嵌套

    降维  一层一层的看

1 lst=["alex","gay","wusir",["范冰冰","李冰冰",[1,"火锅"],"王冰冰"]]
2 print(lst[3][2][1])
3 #输出:火锅

    改变列表中的某一元素,要重新为该元素赋值  

      如: 将某一元素改为大写   需要重新赋值

lst = ["alex", "gay","wusir",["范冰冰","李冰冰",[1, "火锅", "ritian"],"王冰冰"]]
lst[3][2][2] = lst[3][2][2].upper()  #改为大写
print(lst)
lst[3][2][0] = lst[3][2][0] + 99   #将1变为100
print(lst)

二、元组

    只读列表.只能看啥也不能干  (只)不支持 增删改  但是可以用索引如: tu [2]

    使用 () 表示元组

    元组是可迭代对象,因此可以使用 for 循环

    如果元组中只有一个元素表示为:  (元素, )  必须要逗号

    空元组: tuple( )

1 #()表示优先级
2 print((1+3)*5)
3 print((3))  #表示优先级  还是3
4 
5 #元组中只有一个元素时,需要在元素后加逗号
6 tu=(3,)  #是元组
7 tu=(3)  #非元组 表示的是优先级
8 tu=tuple() #空元组
View Code

    元组本身不可变(只限于第一层不能赋值), 

    当元组内部含有字符串时,字符串的内容是不可变的.  因为字符串本身是不变的.

    当元组内部含有列表时,  列表中的内容是可变的. 因为列表本身是可变的.

1 tu=(1,"哈喽","how are you?","alex",[])
2 tu[3].upper() #结果不变 因为alex字符串本身是不可变的
3 print(tu)
4 #输出:(1, '哈喽', 'how are you?', 'alex', [])
5 
6 tu[4].append("chen") #可以添加的,因为位置4处为列表,列表是可变的
7 print(tu)
8 #输出:(1, '哈喽', 'how are you?', 'alex', ['chen'])
View Code

三、range   用法类似于切片

       print (range(1,10))       range(1,10)     [1,2,3,4,5,6,7,8,9]    取不到10(顾头不顾尾)

    range (n)           # 从0到n-1

    range (m,n)       # 从m到n-1

    renge (m,n,q)    # 从m到n-1,每q个取1个

 1 #  range() 类似切片
 2 for i in range(10):  #从1-9 不包含10
 3     print(i)
 4 #输出:0 1 2 3 4 5 6 7 8 9
 5 for i in range(3,7):  # 从3-7 不包含7
 6     print(i)
 7 #输出:3 4 5 6
 8 for i in range(1,10,3): #从1-10,不包含10,每3个取一个
 9     print(i)
10 #输出:1 4 7
View Code

    range是可迭代对象,可以用for循环

      使用 range 和 for 循环来获取列表中的索引

1 lst=["",""]
2 for i in range(len(lst)):
3     i   #索引
4     lst[i] 

 

1 #       0        1      2         3            4        5
2 lst = ["砂锅", "馒头", "盖浇饭", "刀削面", "大麻花", "大煎饼"]
3 # 获取到列表的索引. 拿到索引之后. 可以拿到元素
4 for i in range(len(lst)):
5     print(i)    # i就是lst的索引
6     print(lst[i])

    

    补充:

      python3:  range()  生成器

      python2: xrange()  生成器

 

posted @ 2018-07-31 15:25  葡萄想柠檬  Views(502)  Comments(0)    收藏  举报
目录代码