为什么我不能通过依次分配每个元素来构建列表?如何添加(附加)元素而不出现 IndexError?

2024-11-29 08:42:00
admin
原创
116
摘要:问题描述:我尝试编写一些如下代码:i = [1, 2, 3, 5, 8, 13] j = [] k = 0 for l in i: j[k] = l k += 1 但我收到一条错误消息IndexError: list assignment index out of range,指出j[k] ...

问题描述:

我尝试编写一些如下代码:

i = [1, 2, 3, 5, 8, 13]
j = []
k = 0

for l in i:
    j[k] = l
    k += 1

但我收到一条错误消息IndexError: list assignment index out of range,指出j[k] = l代码行。为什么会出现这种情况?我该如何修复它?


解决方案 1:

j是一个空列表,但您试图[0]在第一次迭代中写入尚不存在的元素。

请尝试执行以下操作,将新元素添加到列表末尾:

for l in i:
    j.append(l)

当然,如果您只想复制现有列表,那么您实际上永远不会这样做。您只需执行以下操作:

j = list(i)

或者,如果您想像使用其他语言中的数组一样使用 Python 列表,那么您可以预先创建一个列表,并将其元素设置为空值(None在下面的示例中),然后在特定位置覆盖该值:

i = [1, 2, 3, 5, 8, 13]
j = [None] * len(i)
#j == [None, None, None, None, None, None]
k = 0

for l in i:
   j[k] = l
   k += 1

需要意识到的是,list对象不会允许您为不存在的索引分配值。

解决方案 2:

您的另一个选择是初始化j

j = [None] * len(i)

解决方案 3:

代替j.append(l)并完全j[k] = l避免。k

解决方案 4:

您还可以使用列表推导:

j = [l for l in i]

或者使用以下语句复制它:

j = i[:]

解决方案 5:

j.append(l)

还要避免使用小写的“L”,因为它们很容易与 1 混淆

解决方案 6:

我认为 Python 方法插入就是您要找的:

在位置 i 处插入元素 x。list.insert(i,x)

array = [1,2,3,4,5]
# array.insert(index, element)
array.insert(1,20)

print(array)

# prints [1,20,2,3,4,5]

解决方案 7:

你可以使用字典(类似于关联数组)来表示 j

i = [1, 2, 3, 5, 8, 13]
j = {} #initiate as dictionary
k = 0

for l in i:
    j[k] = l
    k += 1

print(j)

将打印:

{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}

解决方案 8:

还有一种方法:

j=i[0]
for k in range(1,len(i)):
    j = numpy.vstack([j,i[k]])

在这种情况下j将是一个 numpy 数组

解决方案 9:

也许你需要extend()

i=[1,3,5,7]
j=[]
j.extend(i)

解决方案 10:

显然,该append方法应该用于提高可读性。可能不推荐,我想指出的是,附加也适用于切片或列表连接。j[k] = l用以下可能性之一替换 ,也可以解决您的问题:

j[k:] = [l]
j[k:] = l,
j += l,

我还想提一下,附加功能j[k] = l也可以在其他语言中使用,例如 javascript。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1048  
  在产品开发领域,如何提升产品交付质量一直是企业关注的焦点。集成产品开发(IPD)作为一种系统化的产品开发方法,通过跨职能团队的协同、流程的优化以及资源的整合,能够有效提升产品的交付质量。IPD培训作为推动这一方法落地的重要工具,不仅能够帮助团队理解IPD的核心原则,还能通过实践和案例学习,提升团队的执行力和协作效率。本...
IPD研发管理体系   0  
  在现代企业中,跨部门合作已成为项目成功的关键因素之一。随着业务复杂性的增加,单一部门难以独立完成复杂的项目任务,因此需要多个部门的协同努力。然而,跨部门合作往往面临沟通不畅、职责不清、资源冲突等挑战,这些问题如果得不到有效解决,将直接影响项目的进度和质量。在这种背景下,IPD(集成产品开发)项目流程图作为一种系统化的管...
华为IPD流程   0  
  在研发IPD(集成产品开发)流程中,跨部门协作是确保项目成功的关键因素之一。IPD流程强调从概念到市场的全生命周期管理,涉及市场、研发、制造、供应链等多个部门的协同工作。然而,由于各部门的目标、工作方式和优先级不同,跨部门协作往往面临沟通不畅、资源冲突、决策延迟等挑战。为了应对这些挑战,企业需要采取系统化的方法,优化跨...
IPD概念阶段   0  
  在项目管理的生命周期中,CDCP(Concept Development and Control Plan)阶段是项目从概念到实施的关键过渡期。这一阶段不仅需要明确项目的目标和范围,还需要确保项目团队能够灵活应对可能出现的变更和调整。变更管理在这一阶段尤为重要,因为任何未经控制的变更都可能对项目的进度、成本和质量产生深...
IPD流程中TR   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用