当前位置:   article > 正文

python 数据类型(list)_python

python

这些存储大量数据的容器,在Python中称之为内置数据结构(Built-in Data Structure)

4种内置数据结构(容器类型)
列表(list): [ val1, val2, val3, val4 ]
元组(tuple): ( val1, val2, val3, val4 )
字典(dict): { key1:val1, key2:val2 }
集合(set): { key1, key2, key3, key4 }

什么是列表?
    列表是处理一组有序项目的数据结构
    列表是python中最具灵活性的有序集合对象类型
    列表可以包含任何类型的对象:字符串、数字甚至其他列表
    列表是可变的数据类型,即这种类型的值是可以被修改的

  1. #########列表的定义#######
  2. #定义空列表
  3. >>> lst = []
  4. >>> type(lst)
  5. <class 'list'>
  6. >>> lst2 = list()
  7. >>> lst2
  8. []
  9. # list 列表转换函数
  10. >>> lst3 = list('abc')
  11. >>> lst3
  12. ['a', 'b', 'c']
  13. >>> list('123')
  14. ['1', '2', '3']
  15. >>> type(lst3)
  16. <class 'list'>
  17. >>> list(123)
  18. Traceback (most recent call last):
  19. File "<stdin>", line 1, in <module>
  20. TypeError: 'int' object is not iterable
  21. >>> list(range(3))
  22. [0, 1, 2]

 有序项项目集合 (有下标,可切片)

列表基本操作-切片
切片是通过下标访问列表中的元素,切片可以取出一个子列表
格式:
    sample[start:end:step]
起止区间:[ start, end )
step: 默认=> 1
start: 默认=> step为正时,start为0;step为负时, start为-1
end: 默认=> step为正时,end为列表结尾;step为负时, end为列表开始
注意:三个值都为选填项

  1. >>> lst = ["a", 1, 0.5, None, "y"]
  2. >>> lst[3]
  3. >>> lst[4]
  4. 'y'
  5. >>> lst[2]
  6. 0.5
  7. >>> lst[2:3]
  8. [0.5]
  9. >>> lst[2:]
  10. [0.5, None, 'y']
  11. >>> lst[-2:]
  12. [None, 'y']
  13. >>> lst[6]
  14. Traceback (most recent call last):
  15. File "<stdin>", line 1, in <module>
  16. IndexError: list index out of range
  17. >>> lst[-4:4:-1]
  18. []

列表中可以存放任何数据类型

  1. >>> lst = ["a", 1, 0.5, None, "yxx", print]
  2. >>> lst
  3. ['a', 1, 0.5, None, 'yxx', <built-in function print>]
  4. >>> lst = ["a", 1, 0.5, None, "yxx", print, [1,2]]

列表是可变数据类型
可变和不可变 主要看在原来的内存地址上能不能修改值

  1. >>> str1 = "abc"
  2. >>> str1[1]
  3. 'b'
  4. >>> str1[1]="c"
  5. Traceback (most recent call last):
  6. File "<stdin>", line 1, in <module>
  7. TypeError: 'str' object does not support item assignment
  8. >>> str1 = "acc"
  9. >>> lst
  10. ['a', 1, 0.5, None, 'yxx', <built-in function print>, [1, 2]]
  11. >>> lst[1]
  12. 1
  13. >>> id(lst)
  14. 140711207088584
  15. >>> lst[1]=2
  16. >>> lst
  17. ['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2]]
  18. >>> id(lst)
  19. 140711207088584

列表的基本操作

增加 -- append   每次在列表末尾追加一个元素,作为整体追加,类型不限

extend -- 扩展,将1个列表里的内容扩展到另外一个列表里去

  1. >>> lst.append("sanchuang")
  2. >>> lst
  3. ['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2], 'sanchuang']
  4. >>> lst.append("sanchuang","tongle")
  5. Traceback (most recent call last):
  6. File "<stdin>", line 1, in <module>
  7. TypeError: append() takes exactly one argument (2 given)
  8. >>> lst.append([3,4,5])
  9. >>> lst
  10. ['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2], 'sanchuang', [3, 4, 5]]
  11. >>> lst = [1,2,3]
  12. >>> lst.append(4)
  13. >>> lst
  14. [1, 2, 3, 4]
  15. >>> lst.extend("qwer")
  16. >>> lst
  17. [1, 2, 3, 4, 'q', 'w', 'e', 'r']

增加 --insert  在指定下标位置添加元素

  1. >>> lst
  2. ['a', 'x']
  3. >>> lst.insert(1,'yy')
  4. >>> lst
  5. ['a', 'yy', 'x']

列表是可以进行加法和乘法运算的

  1. >>> [1,2] + [3,4]
  2. [1, 2, 3, 4]
  3. >>> [1,2]*3
  4. [1, 2, 1, 2, 1, 2]

删除 -pop   指定下标删除,默认删除最后一个,并且将删除的元素作为返回值返回

  1. >>> lst = ["a","b","c"]
  2. >>> lst.pop()
  3. 'c'
  4. >>> lst
  5. ['a', 'b']
  6. >>> remove_item = lst.pop()
  7. >>> remove_item
  8. 'b'
  9. >>> lst.append("x")
  10. >>> lst.append("")
  11. >>> lst.append("y")
  12. >>> lst
  13. ['a', 'x', '', 'y']
  14. >>> lst.pop(2)
  15. ''
  16. >>> lst
  17. ['a', 'x', 'y']

删除 - remove  指定元素删除 -- 删除列表中匹配的第一个元素,如果列表中没有指定元素,会报错

  1. >>> lst
  2. ['a', 'x', 'y']
  3. >>> lst.remove('y')
  4. >>> lst
  5. ['a', 'x']
  6. >>> lst.remove("y")
  7. Traceback (most recent call last):
  8. File "<stdin>", line 1, in <module>
  9. ValueError: list.remove(x): x not in list
  10. >>> lst.append("y")
  11. >>> lst.append("y")
  12. >>> lst
  13. ['a', 'x', 'y', 'y']
  14. >>> lst.append("u")
  15. >>> lst.append("y")
  16. >>> lst
  17. ['a', 'x', 'y', 'y', 'u', 'y']
  18. >>> lst.remove("y")
  19. >>> lst
  20. ['a', 'x', 'y', 'u', 'y']

del -- 删除 
只要通过下标,切片能切出来,都可以使用del删除

  1. >>> lst
  2. ['a', 'x', 'y', 'u', 'y']
  3. >>> del lst[1]
  4. >>> y
  5. Traceback (most recent call last):
  6. File "<stdin>", line 1, in <module>
  7. NameError: name 'y' is not defined
  8. >>> lst
  9. ['a', 'y', 'u', 'y']
  10. >>> del lst[2:]
  11. >>> lst
  12. ['a', 'y']

删除 -clear  清空列表

  1. >>> lst.clear()
  2. >>> lst
  3. []

可以通过下标和切片来进行增加和修改
当切片出来的列表为空的时候,就是在start位置开始插入相应的值
当切片出来的列表不为空的时候,则替换查找出来的list元素
切片修改,必须要赋值一个可迭代对象
下标修改,可以接受任意值

  1. >>> lst
  2. ['xx', 'y', 1, 'u', 3]
  3. >>> lst[3]="t"
  4. >>> lst
  5. ['xx', 'y', 1, 't', 3]
  6. >>> lst[1:1]
  7. []
  8. >>> lst[1:1] = "qw"
  9. >>> lst
  10. ['xx', 'q', 'w', 'y', 1, 't', 3]
  11. >>> lst[1:4] = "ab"
  12. >>> lst
  13. ['xx', 'a', 'b', 1, 't', 3]
  14. >>> lst[4:2]
  15. []
  16. >>> lst[4:2] = “rrr”
  17. File "<stdin>", line 1
  18. lst[4:2] = “rrr”
  19. ^
  20. SyntaxError: invalid character in identifier
  21. >>> lst[4:2] = "rrr"
  22. >>> lst
  23. ['xx', 'a', 'b', 1, 'r', 'r', 'r', 't', 3]
  24. >>> lst[4:2] = 12
  25. Traceback (most recent call last):
  26. File "<stdin>", line 1, in <module>
  27. TypeError: can only assign an iterable
  28. >>> lst[2] = 100
  29. >>> lst
  30. ['xx', 'a', 100, 1, 'r', 'r', 'r', 't', 3]

列表反转   负切片 或者是 reverse

  1. >>> lst[::-1]
  2. [3, 't', 'r', 'r', 'r', 1, 100, 'a', 'xx']
  3. >>> lst.reverse()
  4. >>> lst
  5. [3, 't', 'r', 'r', 'r', 1, 100, 'a', 'xx']

排序 -- sort  默认升序
列表中的数据类型一致

  1. >>> lst = [6,2,3,1,4,5]
  2. >>> lst.sort()
  3. >>> lst
  4. [1, 2, 3, 4, 5, 6]
  5. >>> lst.sort(reverse=True) #降序排序
  6. >>> lst
  7. [6, 5, 4, 3, 2, 1]

字符串按照编码来排序

  1. >>> lst = ["abc","中国","bd","abd","你好"]
  2. >>> lst.sort()
  3. >>> lst
  4. ['abc', 'abd', 'bd', '中国', '你好']
  5. >>> ord('a')
  6. 97
  7. >>> ord('中')
  8. 20013
  9. >>> ord('你')
  10. 20320

统计   -- len , count,  index

  1. >>> lst
  2. ['abc', 'abd', 'bd', '中国', '你好']
  3. >>> len(lst)
  4. 5
  5. >>> lst.count("abc")
  6. 1
  7. >>> lst.count("a")
  8. 0
  9. >>> lst.index("abd")
  10. 1
  11. >>> lst.index("abde")
  12. Traceback (most recent call last):
  13. File "<stdin>", line 1, in <module>
  14. ValueError: 'abde' is not in list

遍历:依次取出对象中的每一项数据

list是一个可迭代对象(iterable),可以直接用for遍历

  1. >>> lst = ["aa","bb","cc"]
  2. >>> for i in lst:
  3. ... print(i)
  4. ...
  5. aa
  6. bb
  7. cc
  8. >>> for i in enumerate(lst):
  9. ... print(i)
  10. ...
  11. (0, 'aa')
  12. (1, 'bb')
  13. (2, 'cc')
  14. >>> for i,j in enumerate(lst):
  15. ... print(f"{i} ---> {j}")
  16. ...
  17. 0 ---> aa
  18. 1 ---> bb
  19. 2 ---> cc

成员关系:判断列表中是否有某个数据

  1. >>> lst
  2. ['aa', 'bb', 'cc']
  3. >>> 'aa' in lst
  4. True
  5. >>> 'c' in lst
  6. False
  7. >>> 'c' not in lst
  8. True

查看list对象

  1. >>> dir(list)
  2. ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

小练习

 

  1. >>> a = ['apple','orange',123,0.1111,'cali']
  2. >>> a[1:]
  3. ['orange', 123, 0.1111, 'cali']
  4. >>> a[2:6]
  5. [123, 0.1111, 'cali']
  6. >>> a[1:2]
  7. ['orange']
  8. >>> a[0]
  9. 'apple'
  10. >>> a[-1]
  11. 'cali'
  12. >>> a
  13. ['apple', 'orange', 123, 0.1111, 'cali']
  14. >>> for i in a:
  15. ... print(i)
  16. ...
  17. apple
  18. orange
  19. 123
  20. 0.1111
  21. cali

  1. >>> a = ['python','java','c']
  2. >>> a.append('我是追加')
  3. >>> a
  4. ['python', 'java', 'c', '我是追加']
  5. >>> a.pop()
  6. '我是追加'
  7. >>> del a[0]
  8. >>> a
  9. ['java', 'c']
  10. >>> 'cali' in a
  11. False
  12. >>> len(a)
  13. 2
  14. >>> a.insert(1, ['liu','cali',123,456])
  15. >>> a
  16. ['java', ['liu', 'cali', 123, 456], 'c']

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/177618
推荐阅读
相关标签
  

闽ICP备14008679号