python 数据类型(list)

这些存储大量数据的容器,在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中最具灵活性的有序集合对象类型
    列表可以包含任何类型的对象:字符串、数字甚至其他列表
    列表是可变的数据类型,即这种类型的值是可以被修改的

#########列表的定义#######
#定义空列表
>>> lst = []
>>> type(lst)
<class 'list'>
>>> lst2 = list()
>>> lst2
[]

# list 列表转换函数
>>> lst3 = list('abc')
>>> lst3
['a', 'b', 'c']
>>> list('123')
['1', '2', '3']
>>> type(lst3)
<class 'list'>


>>> list(123)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

>>> list(range(3))
[0, 1, 2]

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

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

>>> lst = ["a", 1, 0.5, None, "y"]
>>> lst[3]
>>> lst[4]
'y'
>>> lst[2]
0.5
>>> lst[2:3]
[0.5]
>>> lst[2:]
[0.5, None, 'y']
>>> lst[-2:]
[None, 'y']
>>> lst[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> lst[-4:4:-1]
[]

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

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

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

>>> str1 = "abc"
>>> str1[1]
'b'
>>> str1[1]="c"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> str1 = "acc"
>>> lst
['a', 1, 0.5, None, 'yxx', <built-in function print>, [1, 2]]
>>> lst[1]
1
>>> id(lst)
140711207088584
>>> lst[1]=2
>>> lst
['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2]]
>>> id(lst)
140711207088584

列表的基本操作

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

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

>>> lst.append("sanchuang")
>>> lst
['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2], 'sanchuang']
>>> lst.append("sanchuang","tongle")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)
>>> lst.append([3,4,5])
>>> lst
['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2], 'sanchuang', [3, 4, 5]]


>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

>>> lst.extend("qwer")
>>> lst
[1, 2, 3, 4, 'q', 'w', 'e', 'r']

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

>>> lst
['a', 'x']
>>> lst.insert(1,'yy')
>>> lst
['a', 'yy', 'x']

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

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

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

>>> lst = ["a","b","c"]
>>> lst.pop()
'c'
>>> lst
['a', 'b']
>>> remove_item = lst.pop()
>>> remove_item
'b'
>>> lst.append("x")
>>> lst.append("")
>>> lst.append("y")
>>> lst
['a', 'x', '', 'y']
>>> lst.pop(2)
''
>>> lst
['a', 'x', 'y']

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

>>> lst
['a', 'x', 'y']
>>> lst.remove('y')
>>> lst
['a', 'x']
>>> lst.remove("y")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> lst.append("y")
>>> lst.append("y")
>>> lst
['a', 'x', 'y', 'y']
>>> lst.append("u")
>>> lst.append("y")
>>> lst
['a', 'x', 'y', 'y', 'u', 'y']
>>> lst.remove("y")
>>> lst
['a', 'x', 'y', 'u', 'y']

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

>>> lst
['a', 'x', 'y', 'u', 'y']
>>> del lst[1]
>>> y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined
>>> lst
['a', 'y', 'u', 'y']
>>> del lst[2:]
>>> lst
['a', 'y']

删除 -clear  清空列表

>>> lst.clear()
>>> lst
[]

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

>>> lst
['xx', 'y', 1, 'u', 3]
>>> lst[3]="t"
>>> lst
['xx', 'y', 1, 't', 3]
>>> lst[1:1]
[]
>>> lst[1:1] = "qw"
>>> lst
['xx', 'q', 'w', 'y', 1, 't', 3]
>>> lst[1:4] = "ab"
>>> lst
['xx', 'a', 'b', 1, 't', 3]
>>> lst[4:2]
[]
>>> lst[4:2] = “rrr”
  File "<stdin>", line 1
    lst[4:2] = “rrr”
                   ^
SyntaxError: invalid character in identifier
>>> lst[4:2] = "rrr"
>>> lst
['xx', 'a', 'b', 1, 'r', 'r', 'r', 't', 3]
>>> lst[4:2] = 12
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> lst[2] = 100
>>> lst
['xx', 'a', 100, 1, 'r', 'r', 'r', 't', 3]

列表反转   负切片 或者是 reverse

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

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

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

字符串按照编码来排序

>>> lst = ["abc","中国","bd","abd","你好"]
>>> lst.sort()
>>> lst
['abc', 'abd', 'bd', '中国', '你好']
>>> ord('a')
97
>>> ord('中')
20013
>>> ord('你')
20320

统计   -- len , count,  index

>>> lst
['abc', 'abd', 'bd', '中国', '你好']
>>> len(lst)
5
>>> lst.count("abc")
1
>>> lst.count("a")
0
>>> lst.index("abd")
1
>>> lst.index("abde")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'abde' is not in list

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

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

>>> lst = ["aa","bb","cc"]
>>> for i in lst:
...     print(i)
... 
aa
bb
cc
>>> for i in enumerate(lst):
...     print(i)
... 
(0, 'aa')
(1, 'bb')
(2, 'cc')

>>> for i,j in enumerate(lst):
...     print(f"{i} ---> {j}")
... 
0 ---> aa
1 ---> bb
2 ---> cc

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

>>> lst
['aa', 'bb', 'cc']
>>> 'aa' in lst
True
>>> 'c' in lst
False
>>> 'c' not in lst
True

查看list对象

>>> dir(list)
['__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']

小练习

 

>>> a = ['apple','orange',123,0.1111,'cali']
>>> a[1:]
['orange', 123, 0.1111, 'cali']
>>> a[2:6]
[123, 0.1111, 'cali']
>>> a[1:2]
['orange']
>>> a[0]
'apple'
>>> a[-1]
'cali'
>>> a
['apple', 'orange', 123, 0.1111, 'cali']
>>> for i in a:
...     print(i)
... 
apple
orange
123
0.1111
cali

>>> a = ['python','java','c']
>>> a.append('我是追加')
>>> a
['python', 'java', 'c', '我是追加']

>>> a.pop()
'我是追加'

>>> del a[0]
>>> a
['java', 'c']

>>> 'cali' in a
False

>>> len(a)
2

>>> a.insert(1, ['liu','cali',123,456])
>>> a
['java', ['liu', 'cali', 123, 456], 'c']

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩未零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值