python基础(8)基本数据类型之列表

5,list(列表)

python的列表可以存放不同的,任意的数据类型对象。

  • 有序

  • 可变

  • 可以存放多个不同类型的元素

1,列表的创建

[],内部元素以分割

data = ["hello world"]
>>> len(data)
1
# 列表中只有一个·元素
data = ["hello", "world"]
>>> len(data)
2
# 列表中两个元素

特性

1.可存放多个值

2.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序

3.可变

2,列表索引

 

 

 

  • 从零开始

  • 顾前不顾后

3,索引以及各种操作方法

>>> data = "hello world"
>>> data.split()
['hello', 'world']
>>> data = data.split("o")
>>> data
['hell', ' w', 'rld']

1,查看列表长度len()

>>> len(data)
3

2,查看索引index() # 没有会报错

>>> data.index("hell")
0
>>> data.index("rld")
2

3,通过索引查看内容

>>> data[0]
'hell'
>>> data[2]
'rld'

4,切片

>>> data[0:1]
['hell']
>>> data[0:2]
['hell', ' w']

# 列表的长度只有3,索引最大只有2,但是后面的
>>> data[0:3]
['hell', ' w', 'rld']
>>> data[0:4]
['hell', ' w', 'rld']

# 步长
>>> data = ['hell', ' w', 'rld']
>>> data[0::2]
['hell', 'rld']

# 反转列表
>>> data[::-1]
['rld', ' w', 'hell']

5,追加append()

>>> data.append("h")
>>> data
['hell', ' w', 'rld', 'h']

# 批量追加extend,将一个列表的元素逐一添加到另一个列表
>>> data = ['hell', ' w', 'rld', 'h']
>>> tools = [111,222,333]
>>> data.extend(tools)
>>> data
['hell', ' w', 'rld', 'h', 111, 222, 333]

6,插入insert()

>>> data.insert(1,"44")
# 按照索引插入
>>> data
['hell', '44', ' w', 'rld', 'h', 111, 222, 333]

7,删除remove() # 从左到右找到第一个,没有会报错

>>> data.remove("h")
>>> data
['hell', '44', ' w', 'rld', 111, 222, 333]

# pop() 根据索引删除
>>> data.pop(2)
' w'
>>> data
['hell', '44', 'rld', 111, 222, 333]

#del
>>> del data  直接删除data
>>> data
Traceback (most recent call last):
 File "<pyshell#85>", line 1, in <module>
   data
NameError: name 'data' is not defined

8,列表元素排序sort()

>>> data = ['hell', ' w', 'rld', 'h']
>>> data.sort()  # 从小到大
>>> data
[' w', 'h', 'hell', 'rld']

>>> data = [111,222,333,444]
>>> data.sort(reverse=True) # 从大到小
>>> data
[444, 333, 222, 111]

# 单独使用字符串排序或者数字排序都可以,但是混用不行
>>> data = ['hell', '44', 'rld', 111, 222, 333]
>>> data.sort()
Traceback (most recent call last):
 File "<pyshell#111>", line 1, in <module>
   data.sort()
TypeError: '<' not supported between instances of 'int' and 'str'

9,反转列表reverse

>>> data = [' w', 'h', 'hell', 'rld']
>>> data.reverse()
>>> data
['rld', 'hell', 'h', ' w']

4,列表和字符串相同的功能

  • 加法 列表+列表

    >>> a = ["h","he","hello"]
    >>> b = [11,222,33]
    >>> a + b
    ['h', 'he', 'hello', 11, 222, 33]

    # str
    >>> a = "hello"
    >>> b = "112233"
    >>> a + b
    'hello112233'
  • 乘法 列表*整形

    >>> a * 2
    ['h', 'he', 'hello', 'h', 'he', 'hello']
    >>> b * 2
    [11, 222, 33, 11, 222, 33]

    # str
    >>> a * 2
    'hellohello'
    >>> b * 2
    '112233112233'
  • in

    >>> 11 in b
    True

    # str
    >>> "11" in b
    True

5,循环for

data = [' w', 'h', 'hell', 'rld']
>>> for i in data:
print(i)
w
h
hell
rld
# 直接循环获取值

>>> for index in range(len(data)):
print(data[index])
w
h
hell
rld
# 先获取索引,再得到值

6,循环中的删除

>>> data
[' w', 'h', 'hell', 'rld']
>>> for i in data:
if i.startswith("h"):
data.remove(i)
# 循环data中每一个元素,如果该元素以h开头,则删除
# 理论上应该得到[' w', 'rld']

# 实际上
>>> data
[' w', 'hell', 'rld']
"""
这是因为for循环先拿到第一个数据“w“,判断不是,下一个。拿到第二个数据”h”,判断是,删除。
拿第三个数据,请注意,此时"h"已经被删除,"hell"是第二个数据,拿到的第三个数据是"rld"
"""
>>> data = [' w', 'h', 'hell', 'rld']
>>> for i in data:
print(i)
if i.startswith("h"):
data.remove(i)
print(f"此时删除的数据是:{i}")
w
h
此时删除的数据是:h
rld
>>> data
[' w', 'hell', 'rld']

循环过程中对列表进行删除数据,一定要注意倒着删

>>> data = [' w', 'h', 'hell', 'rld']
>>> for i in range(len(data)-1,-1,-1):
       if data[i].startswith("h"):
               data.remove(data[i])
>>> data
[' w', 'rld']

错误案例

>>> data = [' w', 'h', 'hell', 'rld']
>>> for i in range(len(data)-1):
if data[i].startswith("h"):
data.remove(data[i])
>>> data
[' w', 'rld']

# 这种方法当data= ["h1", "h2", "h3", "h4", "h5"]就不行了
>>> data = ["h", "h2","h3","h4"]
>>> for i in range(len(data)-1):
if data[i].startswith("h"):
data.remove(data[i])
Traceback (most recent call last):
 File "<pyshell#34>", line 2, in <module>
   if data[i].startswith("h"):
IndexError: list index out of range

7,列表生成式

通过最简洁的方法创建列表

>>> print([i for i in range(10)])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 等同于
>>> data = []
>>> for i in range(10):
data.append(i)

>>> data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
posted @ 2021-10-24 23:32  下个ID见  阅读(19)  评论(0)    收藏  举报