zoukankan      html  css  js  c++  java
  • python基础(7):基本数据类型二(list、tuple)、range

    1. 列表

    1.1 列表的介绍

    列表是python的基础数据类型之⼀,其他编程语⾔也有类似的数据类型。比如JS中的数组, java中的数组等等。它是以[ ]括起来,每个元素⽤','隔开⽽且可以存放各种数据类型:

    lst = [1, '哈哈', "吼吼", [1,8,0,"百度"], ("","", "", ""), "abc", {"":"dict字典"},{"我叫集合","集合"}]

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

    1.2 列表的索引和切片

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

    lst = ["麻花藤", "王剑林", "⻢芸", "周鸿医", "向华强"]
    print(lst[0]) # 获取第⼀个元素
    print(lst[1])
    print(lst[2])
    lst[3] = "流动强" # 注意. 列表是可以发⽣改变的. 这⾥和字符串不⼀样
    print(lst) # ['麻花藤', '王剑林', '⻢芸', '流动强', '向华强']
    s0 = "向华强"
    s0[1] = "" # TypeError: 'str' object does not support item assignment 不允许改变
    print(s0)

    列表的切片:

    lst = ["麻花藤", "王剑林", "⻢芸", "周鸿医", "向华强"]
    print(lst[0:3]) # ['麻花藤', '王剑林', '⻢芸']
    print(lst[:3]) # ['麻花藤', '王剑林', '⻢芸']
    print(lst[1::2]) # ['王剑林', '周鸿医'] 也有步⻓
    print(lst[2::-1]) # ['⻢芸', '王剑林', '麻花藤'] 也可以倒着取
    print(lst[-1:-3:-2]) # 倒着带步⻓

    1.3 列表的增删改查

    1.3.1 添加

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

    lst = ["麻花藤", "林俊杰", "周润发", "周芷若"]
    print(lst)
    lst.append("wusir")
    print(lst)
    
    lst
    = [] while True:   content = input("请输⼊你要录⼊的员⼯信息, 输⼊Q退出:")   if content.upper() == 'Q':      break    lst.append(content) print(lst)
    lst
    = ["麻花藤", "张德忠", "孔德福"] lst.insert(1, "刘德华") # 在1的位置插⼊刘德华. 原来的元素向后移动⼀位 print(lst)

    # 迭代添加 lst = ["王志⽂", "张⼀⼭", "苦海⽆涯"] lst.extend(["麻花藤", "麻花不疼"]) print(lst)

    1.3.2 删除

    pop, remove, clear, del

    lst = ["麻花藤", "王剑林", "李嘉诚", "王富贵"]
    print(lst)
    deleted = lst.pop() # 删除最后⼀个
    print("被删除的", deleted)
    print(lst)
    
    el
    = lst.pop(2) # 删除2号元素 print(el) print(lst)
    lst.remove(
    "麻花藤") # 删除指定元素 print(lst) # lst.remove("哈哈") # 删除不存在的元素会报错 # # print(lst)
    lst.clear() # 清空list print(lst)

    # 切⽚删除 del lst[1:3] print(lst)

    1.3.3 修改

    索引切片修改

    # 修改
    lst = ["太⽩", "太⿊", "五⾊", "银王", "⽇天"]
    lst[1] = "太污" # 把1号元素修改成太污
    print(lst)
    
    lst[
    1:4:3] = ["麻花藤", "哇靠"] # 切⽚修改也OK. 如果步⻓不是1, 要注意. 元素的个 print(lst)
    lst[
    1:4] = ["李嘉诚个⻳⼉⼦"] # 如果切⽚没有步⻓或者步⻓是1. 则不⽤关⼼个数 print(lst)

    1.3.4 查询

    列表是一个可迭代对象,所以可以进行for循环

    for el in lst:
       print(el)

    1.3.5 其他操作

    lst = ["太⽩", "太⿊", "五⾊", "银王", "⽇天", "太⽩"]
    c = lst.count("太⽩") # 查询太⽩出现的次数
    print(c)
    
    lst
    = [1, 11, 22, 2] lst.sort() # 排序. 默认升序 print(lst) lst.sort(reverse=True) # 降序 print(lst)
    lst
    = ["太⽩", "太⿊", "五⾊", "银王", "⽇天", "太⽩"] print(lst) lst.reverse() print(lst)
    l
    = len(lst) # 列表的⻓度 print(l)

    1.4 列表的嵌套

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

    lst = [1, "太⽩", "wusir", ["⻢⻁疼", ["可⼝可乐"], "王剑林"]]
    
    # 找到wusir print(lst[2])
    # 找到太⽩和wusir print(lst[1:3])
    # 找到太⽩的⽩字 print(lst[1][1])
    # 将wusir拿到. 然后⾸字⺟⼤写. 再扔回去 s = lst[2] s = s.capitalize() lst[2] = s print(lst) # 简写 lst[2] = lst[2].capitalize() print(lst)
    # 把太⽩换成太⿊ lst[1] = lst[1].replace("", "") print(lst)
    # 把⻢⻁疼换成⻢化疼 lst[3][0] = lst[3][0].replace("", "") print(lst[3][0])
    lst[
    3][1].append("雪碧") print(lst)

    2. 元组

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

    tu = (1, "太⽩", "李⽩", "太⿊", "怎么⿊")
    print(tu)
    

    print(tu[0]) print(tu[2]) print(tu[2:5]) # 切⽚之后还是元组
    #
    for循环遍历元组 for el in tu:    print(el)

    # 尝试修改元组 # tu[1] = "⻢⻁疼" # 报错 'tuple' object does not support item assignment
    tu = (1, "哈哈", [], "呵呵") # tu[2] = ["fdsaf"] # 这么改不⾏
    tu[2].append("麻花藤") # 可以改了. 没报错 tu[2].append("王剑林") print(tu)

    关于不可变,注意: 这⾥元组的不可变的意思是⼦元素不可变,⽽⼦元素内部的⼦元素是可 以变,这取决于⼦元素是否是可变对象。元组中如果只有⼀个元素,⼀定要添加⼀个逗号,否则就不是元组。

    tu = (1,)
    print(type(tu))

    元组也有count(), index(), len()等⽅法. 可以⾃⼰测试使⽤。

    3. range

    range可以帮我们获取到⼀组数据,通过for循环能够获取到这些数据。

    for num in range(10):
       print(num)
    for num in range(1, 10, 2):
       print(num)
    for num in range(10, 1, -2): # 反着来, 和切⽚⼀样
       print(num)
  • 相关阅读:
    leetcode 1301. 最大得分的路径数目
    LeetCode 1306 跳跃游戏 III Jump Game III
    LeetCode 1302. 层数最深叶子节点的和 Deepest Leaves Sum
    LeetCode 1300. 转变数组后最接近目标值的数组和 Sum of Mutated Array Closest to Target
    LeetCode 1299. 将每个元素替换为右侧最大元素 Replace Elements with Greatest Element on Right Side
    acwing 239. 奇偶游戏 并查集
    acwing 238. 银河英雄传说 并查集
    acwing 237程序自动分析 并查集
    算法问题实战策略 MATCHORDER 贪心
    Linux 安装Redis全过程日志
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/11802562.html
Copyright © 2011-2022 走看看