day04

1. 什么是列表

列表是python的基础数据类型之⼀ ,列表由[]来表示,每一项使用逗号隔开. 列表什么都能装. 能装对象的对象.
列表可以装大量数据,⽽且列表是有序的(按照你保存的顺序),有索引, 可以切⽚⽅便取值.

2. 列表的索引和切片

1. 列表和字符串⼀样也拥有索引
    lst = ["李白","杜甫","白居易"]
    print(lst[0])  # 李白
    print(lst[1])  # 杜甫
    print(lst[2])  # 白居易

    lst[1] = "王维"  # 注意: 列表是可以改变的,而字符串不能改变.
    print(lst)  # 李白 王维 白居易

    s = "向华强"
    s[1] = "" # 字符串不允许改变
    print(s)  # (报错)TypeError: 'str' object does not support item assignment
2. 列表的切片
    lst = ["麻花藤", "王剑林", "⻢芸", "周鸿医", "向华强"]
    print(lst[0:3])  # ['麻花藤', '王剑林', '⻢芸']
    print(lst[:3])  # ['麻花藤', '王剑林', '⻢芸']
    print(lst[1::2])  # ['王剑林', '周鸿医'] 也有步⻓
    print(lst[2::-1])  # ['⻢芸', '王剑林', '麻花藤'] 也可以倒着取

    print(lst[-1:-3:-2])  # 倒着带步⻓

2. 列表的增删改查

*增加
lst = ['赵四','施瓦辛格','黄渤','郭达森','赛利亚']

# 在屁股添加
lst.append("黄宏")  # 只能加一个元素(元素可以是一个列表),在原有的基础上进行的操作
#在xxx位置插入xxxx内容
lst.insert(1,"王力宏")  # 在指定位置插入添加,原来的元素向后移动⼀位.
# 迭代添加,可以加多个元素.
lst.extend(["麻花藤",'马云',"王健林",'许家印'])  # 迭代添加里面的多个元素
print(lst)
*删除
lst = ['赵四','施瓦辛格','黄渤','郭达森','赛利亚']

lst.pop() # 删除最后⼀个
print(lst)  # ["赵四","施瓦辛格","黄渤,"郭达森"]
data = lst.pop(2) # 返回的被删除数据(删除的是2号元素)
print(data)  # 黄渤
print(lst)  # ["赵四","施瓦辛格","郭达森"]

lst.remove("赵四") # 删除元素
lst.remove("刘能") # 如果不存在会报错

# 切片删除 (指令)
del lst[1:3]
# 清空
lst.clear()
print(lst)
*修改
lst = ['王者农药',"魔兽世界","DNF","逆水寒","反恐精英"]

lst[0] = "扫雷"
print(lst)  # ['扫雷', '魔兽世界', 'DNF', '逆水寒', '反恐精英']

lst [1:3]= ["跑跑卡丁车"] # 先删除后添加
print(lst)  # ['王者农药', '跑跑卡丁车', '逆水寒', '反恐精英']

lst [1::3] = ["QQ华夏","QQ三国"] # 切片修改的时候. 如果步长不是1. 注意元素的个数
print(lst)  # ['王者农药', 'QQ华夏', 'DNF', '逆水寒', 'QQ三国']
*查询(用for循环)
lst = ["锅包肉","好人家火锅","巫山烤鱼","清水煮白菜","烤鸭"]
for el in lst:  # element(元素)
    print(el) 

3. 列表的嵌套

lst = ["alex","gay","wusir",["范冰冰","李冰冰",[1,"火锅","ritian","凤爪"],"王冰冰"]]
print(lst[3][2][1]) # 火锅
lst[3][2][2] = lst[3][2][2].upper() # ,ritian大写后的字符串放入索引位置
lst[3][2][0] = 100  # 1变成100
lst[3][2][0] = lst[3][2][0] + 99  # 100 + 99 = 199
print(lst)  #['alex', 'gay', 'wusir', ['范冰冰', '李冰冰', [199, '火锅', 'RITIAN', '凤爪'], '王冰冰']]

4. list相关操作

# 查询某个元素出现的次数
lst = ["太白","wusir","太白","康琪","摇摆"]
c = lst.count("太白") # 查询太⽩出现的次数
print(c)  # 2

# 找到列表元素的下标
print(lst.index("太白"))  # 0

# 排序数字(升序, 降序)
lst = [1,5,3,4,3,2,44,3,2,22]
lst.sort()  # 排序, 默认升序
print(lst)  # [1, 2, 2, 3, 3, 3, 4, 5, 22, 44]
lst.sort(reverse=True)  # 排序, 默认降序, reverse= Ture 降序
print(lst)  # [44, 22, 5, 4, 3, 3, 3, 2, 2, 1]

# 列表里的字符串,翻转倒序输出
lst = ["晓雪","小茹","小花","晓梅"]
lst.reverse()   # 翻转
print(lst)  # ['晓梅', '小花', '小茹', '晓雪']

# 求长度
print(len(lst)) # 4

5. 元组

元组: 俗称不可变的列表.⼜被成为只读列表, 元组也是python的基本数据类型之⼀, ⽤⼩括号括起来, ⾥⾯可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能改. 
# 元组中如果只有⼀个元素. ⼀定要添加⼀个逗号, 否则就不是元组
tu = (1)
print(type(tu))  # <class 'int'>
tu = (1,)
print(type(tu))  # <class 'tuple'>

# 空元组的表示
tu = tuple()
tu = ("人民币","美元","英镑","欧元")
tu.append("哈哈")     # 增加不行
tu[0] = "日元"    # 不允许修改
del tu[2]     # 删除也不行

# 索引可以用(查询可以)
print(tu[2])  # 英镑

# 切片可以(切片后还是元组)
print(tu[::2)  # ('人民币', '英镑')

for el in tu:     # 遍历输出(循环可以)
    print(el)

注意: 元组查询可以. 循环也可以. 切片也可以. 但就是不能改(增删改).
# 关于不可变, 注意: 这⾥元组的不可变的意思是⼦元素不可变.
# ⽽⼦元素内部的⼦元素是可以变, 这取决于⼦元素是否是可变对象. # 元组的第一层是不能进行赋值的, 内部元素没有要求 tu = (1,'哈喽',"how are you?",[]) tu[3].append("峰哥") # 这里的列表是子元素,而列表里面的子元素可以改变 print(tu) # (1, '哈喽', 'how are you?', ['峰哥']) tu = (1,'哈喽',"how are you?","alex") tu[3].upper() # (报错)转换成大写可以, 但是塞不进去了. print(tu)

6. range

# range()是一个可迭代对象,所以可以用for循环.

range(n)  # 0 -> n-1
for i in range(10):
    print(i)
 range(m,n)   # m -> n-1
for i in range(1,10):
    print(i)

range(m,n,q)  # m -> n-1 每q个取一个
for i in range(1,10,3):
    print(i)

for i in range(100,90,-1):
    print(i)
           0      1      2       3       4       5
# lst = ["砂锅","馒头","盖浇饭","刀削面","大麻花","大煎饼"]

# 获取到列表的索引. 拿到索引之后. 可以拿到元素
for i in range(len(lst)):
    print(i)    # i就是list的索引
    print(lst[i])

for el in lst:
    print(el)

 

posted @ 2019-08-01 09:42  magickang  阅读(124)  评论(0编辑  收藏  举报