您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

循环中列表项的修改(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]
python 2022/1/1 18:52:30 有311人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶