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

我正在尝试使用for循环修改列表中的项目,但出现错误(请参见下文)。样例代码:

#!/usr/bin/env python
# *-* coding: utf8 *-*

data = []
data.append("some")
data.append("example")
data.append("data")
data.append("here")

for item in data:
    data[item] = "everything"

错误:

Traceback (most recent call last):
  File "./testy.py", line 11, in <module>
    data[item] = "everything"
TypeError: list indices must be integers, not str

有什么办法解决这个问题?

参考方案

尝试以下方法:

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)形式的元组的迭代器,因此您所需要做的就是获取索引而忽略该项目。我不确定一种或另一种方式(enumeratexrange)是否会明显更快或更佳,因为我认为列表将其长度存储在变量中,因此可以快速访问它而无需计算列表元素。

但是,如果您需要旧的列表值来计算新的列表值,则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 uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python-如何检查Redis服务器是否可用 - python

我正在开发用于访问Redis Server的Python服务(类)。我想知道如何检查Redis Server是否正在运行。而且如果某种原因我无法连接到它。这是我的代码的一部分import redis rs = redis.Redis("localhost") print rs 它打印以下内容<redis.client.Redis o…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…