Python - 将列表范围设置为特定值

标签 python list python-2.7

我需要根据具有边界 (start,end) 的元组将列表的子集设置为特定值。

目前我正在这样做:

indexes = range(bounds[0], bounds[1] + 1)
for i in indexes:
   my_list[i] = 'foo'

这对我来说似乎不太好。是否有更 pythonic 的方法?

最佳答案

使用切片赋值:

my_list[bounds[0]:bounds[1] + 1] = ['foo'] * ((bounds[1] + 1) - bounds[0])

或者使用局部变量只添加一次+ 1:

lower, upper = bounds
upper += 1
my_list[lower:upper] = ['foo'] * (upper - lower)

您可能希望将上限存储为非包容性,以便更好地使用 python 并避免所有 + 1 计数。

演示:

>>> my_list = range(10)
>>> bounds = (2, 5)
>>> my_list[bounds[0]:bounds[1] + 1] = ['foo'] * ((bounds[1] + 1) - bounds[0])
>>> my_list
[0, 1, 'foo', 'foo', 'foo', 'foo', 6, 7, 8, 9]

关于Python - 将列表范围设置为特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395057/

相关文章:

python - 比较Python中的两个路径

python - 使用 python elementtree 将 xml 解析为行项目

python - 如何将内存中的 SQLite 数据库复制到 Python 中的另一个内存中的 SQLite 数据库?

python - 在python中组合函数

list - Prolog 列表的递归列表

python - 类型错误 : cannot concatenate 'str' and 'dict' objects

python-2.7 - pandas.DataFrame.describe() 与 numpy.percentile() NaN 处理

python - 多语言 ubuntu 无法下载语言文件

Python - 函数更改输入列表,虽然我做了一个副本

python - Python 中索引的循环范围