python – 在列表中保持增长值并保持列表大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在列表中保持增长值并保持列表大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2392字,纯文字阅读大概需要4分钟。
内容图文
几天前,我一直在尝试许多方法和方法,以便在Python中获得所需的列表行为.我需要构造一个方法,在保持列表大小的同时分配和更改列表中的值.让我解释
我有这样的代码.
A = [1,1,1,1,1]
B=[]
for i in range(0,len(A)):
for j in range(1,3):
val = j*2*A[i]
B.insert(i,val)
print(B)
结果我得到:
[4, 2]
[4, 4, 2, 2]
[4, 4, 4, 2, 2, 2]
[4, 4, 4, 4, 2, 2, 2, 2]
[4, 4, 4, 4, 4, 2, 2, 2, 2, 2]
我想做的事!
在这种情况下取??A-list的第一个值为int 1.然后通过增加范围函数进行一些计算. val = 1 * 2 * A [0] = 2并在B列表中设置,并继续val = 2 * 2 * A [0] = 4并在B-list中设置.然后下一个val = 1 * 2 * A [1] = 2并且val = 2 * 2 * A [1] = 4.我希望有这样的输出.
[2]
[4]
[2,2]
[4,4]
...............
更新:
我已经更新了一个代码示例,这次添加for循环用于构建列表A但是它遇到了一些问题.我真的不明白为什么它运行时错误列表索引超出范围.很明显,当len(列表A)为4时,len(列表B)变为5.不期望列表B超出范围?
A = []
B = []
for n in range(1,11):
A.append(n/n)
for i in range(0,len(A)):
B.insert(i, A[i])
for j in range(1,3):
for k, _ in enumerate(B):
B[k] = j*2*A[k]
print(B)
输出我得到:
[2.0]
[4.0]
[2.0, 4.0] #<------- Not need it
[2.0, 2.0]
[4.0, 2.0] #<------- Not need it
[4.0, 4.0]
[2.0, 1.0, 4.0] #<------- Not need it
[2.0, 2.0, 4.0] #<------- Not need it
IndexError: list index out of range
预期产出.
[2.0]
[4.0]
[2.0, 2.0]
[4.0, 4.0]
---------------
我真的不知道如何解决这类问题,我感谢任何帮助……
解决方法:
你应该把insert函数放在外部循环中,否则不仅要插入A中的每个元素,还要插入范围(1,3)中的每个计算步骤
即
A = [1,1,1,1,1]
B=[]
for i in range(0,len(A)):
B.insert(i, A[i])
for j in range(1,3):
B[i] = j*2*A[i]
print(B)
或更好的Python:
A = [1, 1, 1, 1, 1]
B = []
for i, elmnt in enumerate(A):
B.insert(i, elmnt)
for j in range(1, 3):
B[i] = j * 2 * elmnt
print(B)
但是如果你在下一步中用val = 2 * 2 * A [0] = 4覆盖它,你为什么要把val = 1 * 2 * A [0] = 2写入B [0]?
这没有意义.
编辑:
关于应该是预期行为的最新协议:
A = [1, 1, 1, 1, 1]
B = []
for i, elmnt in enumerate(A):
B.insert(i, elmnt)
for j in range(1, 3):
for k, _ in enumerate(B):
B[k] = j * 2 * elmnt
print(B)
[2]
[4]
[2, 2]
[4, 4]
[2, 2, 2]
[4, 4, 4]
[2, 2, 2, 2]
[4, 4, 4, 4]
[2, 2, 2, 2, 2]
[4, 4, 4, 4, 4]
…或者使用numpy,可以更容易地一次更改数组的所有值:
import numpy as np
A = np.array([1, 1, 1, 1, 1], 'int')
B = np.array([], 'int')
for i, elmnt in enumerate(A):
B = np.append(B, elmnt)
for j in range(1, 3):
B[:] = j * 2 * elmnt
print(B)
[2]
[4]
[2 2]
[4 4]
[2 2 2]
[4 4 4]
[2 2 2 2]
[4 4 4 4]
[2 2 2 2 2]
[4 4 4 4 4]
内容总结
以上是互联网集市为您收集整理的python – 在列表中保持增长值并保持列表大小全部内容,希望文章能够帮你解决python – 在列表中保持增长值并保持列表大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。