美文网首页
爬虫_005_Python列表

爬虫_005_Python列表

作者: 为宇绸缪 | 来源:发表于2023-01-08 20:29 被阅读0次

列表, 是在爬虫中未来遇见的仅次于字符串的一种数据类型. 它主要是能承载大量的数据。理论上,你的内存不爆炸,它就能一直存数据。
列表不同于字符串,它是在原有的基础上进行操作的。
列表承载的数据量是非常大的,列表本身就是可变的,所有的操作都是在原来的列表上进行操作。
(1)创建新列表
创建新列表的两种方式

list_01 = []
list_01 = list()

(2)索引和切片
列表的索引和切片逻辑与字符串完全一致
注意:如果列表中没有数据. 取0会报错。如果给出的索引下标超过了列表的最大索引. 依然会报错
2.1 取出指定的列表元素

lst = ["仙1", "仙2", "仙3", "古1", "古2", "古3"]
item_0 = lst[0]
item_1 = lst[1]
print(item_0, item_1)

# 结果
# 仙1 仙2

2.2 切片取数据

lst = ["仙1", "仙2", "仙3", "古1", "古2", "古3"]
print(lst[3:])

# 结果
# ['古1', '古2', '古3']

(3)增加数据
3.1 append:给列表添加数据,使用append在列表末尾增加数据

lst = []
lst.append("云天河")
lst.append("云天青")
print(lst)
# 结果
# ['云天河', '云天青']

3.2 insert:在指定位置增加数据,原来的数据会往后移动

lst = ["仙1", "仙2", "仙3", "仙4", "仙5"]
lst.insert(2, "仙3问情")
print(lst)

# 结果
# ['仙1', '仙2', '仙3问情', '仙3', '仙4', '仙5']

(4)列表合并
使用 extend 将两个列表进行合并

list_01 = ["仙1", "仙2", "仙3"]
list_02 = ["古1", "古2", "古3"]
list_01.extend(list_02)
print(list_01)

# 结果
# ['仙1', '仙2', '仙3', '古1', '古2', '古3']

(5)删除数据
5.1 pop:使用索引进行删除

list_01 = ["仙1", "仙2", "仙3"]
list_01.pop(1)
print(list_01)
# 结果
# ['仙1', '仙3']

5.2 remove:指定你要删除的元素

list_01 = ["仙1", "仙2", "仙3"]
list_01.remove("仙1")
print(list_01)
# 结果
# ['仙2', '仙3']

5.3 删除列表中的数据会出现的错误

lst = ["张无忌", "张三丰", "云天河", "云天青", "张三", "李四"]
for item in lst:
    if item.startswith("张"):
        lst.remove(item)
print(lst)

# 结果
# ['张三丰', '云天河', '云天青', '李四']

分析

原始列表与索引
        0         1        2         3       4      5
lst = ["张无忌", "张三丰", "云天河", "云天青", "张三", "李四"]
刚开始的时候,循环从0开始,索引为0,然后 张无忌 是以张开头,被删除,此时列表变为

        0         1        2        3      4
lst = ["张三丰", "云天河", "云天青", "张三", "李四"]
此时 张三丰 被放到了第一位,但是for循环使得列表指向下一个,索引为1,导致 张三丰 没有被判断,直接从 云天河 开始判断

解决方案1:使用 lst [:],使用切片,循环的是切片切出来的列表
循环列表的同时,想要删除列表中的内容,用切片整体切下来

lst = ["张无忌", "张三丰", "云天河", "云天青", "张三", "李四"]
for item in lst[:]:
    if item.startswith("张"):
        lst.remove(item)
print(lst)

# 结果
# ['云天河', '云天青', '李四']

解决方案2:临时列表
把所有要删的内容放到一个临时的列表当中
目的都是让删除的列表和循环的列表不是同一个列表

lst = ["张无忌", "张三丰", "云天河", "云天青", "张三", "李四"]
temp_list = []
for item in lst:
    if item.startswith("张"):
        temp_list.append(item)
for i in temp_list:
    lst.remove(i)
print(lst)

# 结果
# ['云天河', '云天青', '李四']

(6)修改列表
使用索引重写指定数据即可

list_01 = ["仙1", "仙2", "仙3"]
list_01[1] = "古1"
print(list_01)
# 结果
# ['仙1', '古1', '仙3']

(7)range
用for循环数数的一个东西
语法:range(起始数据,结尾数据,步长),注意顾头不顾尾

# 从0数到9
for i in range(10):
    print(i) 

# 从5 数到 9
for i in range(5, 10):
    print(i)

# 1,3,5,7,9
for i in range(1, 10, 2):
    print(i)

使用range知道索引。
可以循环出列表的索引,有了索引就可以随意的提取数据

例题:把lst中每一项数据增加10
(1)使用range

lst = [11, 22, 33, 44]
for i in range(len(lst)):
    lst[i] = lst[i] + 10
print(lst)

# 结果
# [21, 32, 43, 54]

(2)使用 enumerate(),可以同时拿到索引和元素

lst = [11, 22, 33, 44]
for i, item in enumerate(lst):
    lst[i] = item + 10
print(lst)

# 结果
# [21, 32, 43, 54]

相关文章

  • 爬虫_005_Python列表

    列表, 是在爬虫中未来遇见的仅次于字符串的一种数据类型. 它主要是能承载大量的数据。理论上,你的内存不爆炸,它就能...

  • python爬虫抓取app列表的图标

    python爬虫抓取app列表的图标 爬虫简介 所谓的爬虫简单来说,就是通过不断的变化http请求的url,向服务...

  • 爬虫学习笔记

    爬虫 Python复习 数据类型 列表#列表可以重新赋值a = [11,'avc',1.1] 元组 tuple#元...

  • Scrapy的运行机制

    列表项爬虫启动,引擎(Engine)会将起始的url传入到调度器(Scheduler)列表项调度器(Schedul...

  • 寒假学爬虫笔记 NO.1

    新闻爬虫1.0 在列表页获取列表和时间 材料:Pycharm,Chrome开发人员工具,infoLite插件,bs...

  • 爬虫集合

    各大网站文本,图片,语音,视频爬虫~ 项目地址 代码 爬虫列表 智联招聘 京东 推酷 头条 微博 87fuli 电...

  • python爬虫系列-2

    1.系列文章列表 python爬虫系列-1 源码 这个爬虫是在第一篇的爬虫的基础上增加了文档正则匹配来获取所有的u...

  • pandas中的csv(表格)格式的存储

    首先是将元素转化为列表后,按照列表进行存储,一般用于爬虫后的数据,例: ①names=[xfor xin name...

  • python3多线程threading和queqe的使用

    需求是有个很长的列表,然后每次多线程处理一部分,直到列表为空。常见的应用是爬虫程序。比如有个代理ip列表100个,...

  • Python学习笔记(4)翻页采集列表

    **一、操作步骤。京东的列表网页有很多页,爬虫能不能自动翻页,采集每一页的数据?当然可以,做好翻页采集规则,爬虫就...

网友评论

      本文标题:爬虫_005_Python列表

      本文链接:https://www.haomeiwen.com/subject/gcjycdtx.html