栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

循环中列表项的修改(python)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

循环中列表项的修改(python)

尝试以下方法:

for i in xrange(len(data)):    data[i] = "everything"

您遇到的基本问题是,当你写的

data[i]
,有
data
是一个列表,则
i
需要是一个整数,数字索引列表。但是在循环中

for item in data

item
是列表中的实际事物,即字符串,而不是事物的数字索引。
xrange
是一个迭代器,它生成数字而不是列表中的值,因此您可以使用它。

一个替代方案是

for i, _ in enumerate(data):    data[i] = "everything"

enumerate
函数为您提供了一个在表单元组上进行迭代的迭代器
(index,item)
,因此您所需要做的就是获取索引而忽略该项目。我不确定一种方式或另一种方式(
enumerate
或方式
xrange
)是否会明显更快或更佳,因为我认为列表将其长度存储在变量中,因此可以快速访问它而无需计算列表元素。

但是,如果您需要旧的列表值来计算新的列表值,则此

enumerate
方法可能会稍快一些,因为可以避免让Python查找列表中的元素:

for i, item in enumerate(data):    data[i] = func(item)

这类事情最好用列表理解来表达:

data = [func(item) for item in data]

执行此操作时,Python将遍历中的每个项目

data
,对其应用功能,并根据结果自动构造一个新列表,因此您不必担心将结果
func(item)
放在列表中的正确位置。您原来的示例实际上可以表示为

data = ["everything" for item in data]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号