如何在 python 中添加两个索引数量相同的列表
How to add two lists with the same amount of index's in python
我对编码还是个新手,所以对于这个基本问题我深表歉意。如何添加到两个单独列表的元素?
listOne = [0, 1 , 7, 8]
listTwo = [3, 4, 5, 6]
listThree = []
for i in listOne:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
我希望输出为 [3, 5, 12, 14]
但我一直收到语法错误
TypeError: List indices must be integers, not strings.
我认为这可能与 i 可能是一个字符串有关,所以我将 int(i)
作为 for 循环之后的第一行,但这没有帮助。
print np.array(list1) + np.array(list2)
就这些了。
您可以使用zip()
功能。将 +
更改为您想要的任何操作。
listOne = [0, 1 , 7, 8]
listTwo = [3, 4, 5, 6]
l = [x + y for x, y in zip(listOne, listTwo)]
print(l)
[3, 5, 12, 14]
我不知道为什么会出现您发布的错误。其余代码在哪里? listThree是在哪里初始化的?
您犯的错误是您正在遍历列表元素,但随后您的行为就好像您正在遍历索引一样。例如,没有 listOne[8]。您似乎想做的是:
listThree = []
for i in range(len(listOne)):
listThree.append(listOne[i] + listTwo[i])
print(listThree)
不过更好的办法是避免所有的 for-append 并使用列表理解。
listThree = [ listOne[i]+listTwo[i] for i in range(len(listOne)) ]
print(listThree)
您需要在 for 循环之外创建 listThree。
listOne = [0, 1, 7, 8]
listTwo = [3, 4, 5, 6]
listThree = []
我在 listOne 中:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
打印(listThree)
就是这样。编码很容易学习向计算机解释你自己如何向自己解释它。快乐编码:-)
您可以将 map
与 operator
模块中的 add
函数一起使用:
>>> from operator import add
>>> listOne = [0, 1 , 7, 8]
>>> listTwo = [3, 4, 5, 6]
>>> map(add, listOne, listTwo)
[3, 5, 12, 14]
我不确定您为什么会收到该特定错误。你实际上应该得到索引超出范围的异常。这就是我将您的代码粘贴到我的解释器中时得到的结果。原因是这样的。
当你说
for i in listOne:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
i 实际上等于每次迭代时列表中项目的值,因此 0 然后 1,然后 7,然后 8。因此,当您尝试使用 i 作为索引访问 listOne 和 listTwo 的元素时, 当 i 大于列表中最后一项的位置时,它将失败。
有很多方法可以完成您想要的。你可以这样做
for i in range(4):
listAdd.append(listOne[i] + listTwo[i])
你也可以这样做
for x,y in zip(listOne, listTwo)
listAdd.append(x+y)
这些是一些最类似循环的方法。 leb 和 Donald 展示了上面的列表推导式,Dan 展示了 map。
你错了两件事
- 您在 for
中使用了 listOne 的元素
- 您不能在 for 范围之外创建变量。
看似难,其实很简单
listOne = [0, 1, 7, 8]
listTwo = [3, 4, 5, 6]
for i in listOne:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
看看你的 for,"i" 变量它假设这个值:
0, 1, 7, 8
那是因为你使用了 "i in listOne",所以,"i" 它假定了 listOne 的值。
正确的做法是:
listOne = [0, 1, 7, 8]
listTwo = [3, 4, 5, 6]
for i in range(len(listOne)):
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
现在 "i" 将采用以下值:“0、1、2、3”,因为现在您在 for 中使用了 listOne 的长度。
但是还有一件事。这有点困难,但你需要知道。
当您在代码块内(在 if、while、for... 内)声明一个变量时,当程序离开该块时它就死掉了。例如:
x = 30
if x is 30:
stringInsideIf = "Hello World"
print(stringInsideIf)
在这个例子中,你会收到错误,因为"stringInsideIf"它没有在 if 块之外声明。
因此,您需要在 for 块之外声明 "listThree" 作为一个新列表,如下所示
listThree = []
我认为它会解决问题
并且不要害怕问基本问题,没有人天生就是程序员
同意其他人的看法,认为有更好的方法(列表理解、内置库等),但这里是最低限度地修复代码的方法:
for i in range(len(listOne)):
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
关键是您正在尝试遍历列表 indices,而不是它的值(这是您从 "for i in listOne:" 获得的值)。
len(listOne) 给出列表的长度(此处:4)
范围(4) -> (0, 1, 2, 3)
for i in listOne -->这里我代表列表的元素而不是索引
listOne = [0, 1 , 7, 8]
listTwo = [3, 4, 5, 6]
listThree = []
for i in range(len(listOne)):
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
以上代码可以正常工作。
我对编码还是个新手,所以对于这个基本问题我深表歉意。如何添加到两个单独列表的元素?
listOne = [0, 1 , 7, 8]
listTwo = [3, 4, 5, 6]
listThree = []
for i in listOne:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
我希望输出为 [3, 5, 12, 14]
但我一直收到语法错误
TypeError: List indices must be integers, not strings.
我认为这可能与 i 可能是一个字符串有关,所以我将 int(i)
作为 for 循环之后的第一行,但这没有帮助。
print np.array(list1) + np.array(list2)
就这些了。
您可以使用zip()
功能。将 +
更改为您想要的任何操作。
listOne = [0, 1 , 7, 8]
listTwo = [3, 4, 5, 6]
l = [x + y for x, y in zip(listOne, listTwo)]
print(l)
[3, 5, 12, 14]
我不知道为什么会出现您发布的错误。其余代码在哪里? listThree是在哪里初始化的?
您犯的错误是您正在遍历列表元素,但随后您的行为就好像您正在遍历索引一样。例如,没有 listOne[8]。您似乎想做的是:
listThree = []
for i in range(len(listOne)):
listThree.append(listOne[i] + listTwo[i])
print(listThree)
不过更好的办法是避免所有的 for-append 并使用列表理解。
listThree = [ listOne[i]+listTwo[i] for i in range(len(listOne)) ]
print(listThree)
您需要在 for 循环之外创建 listThree。
listOne = [0, 1, 7, 8]
listTwo = [3, 4, 5, 6]
listThree = []
我在 listOne 中:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
打印(listThree)
就是这样。编码很容易学习向计算机解释你自己如何向自己解释它。快乐编码:-)
您可以将 map
与 operator
模块中的 add
函数一起使用:
>>> from operator import add
>>> listOne = [0, 1 , 7, 8]
>>> listTwo = [3, 4, 5, 6]
>>> map(add, listOne, listTwo)
[3, 5, 12, 14]
我不确定您为什么会收到该特定错误。你实际上应该得到索引超出范围的异常。这就是我将您的代码粘贴到我的解释器中时得到的结果。原因是这样的。 当你说
for i in listOne:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
i 实际上等于每次迭代时列表中项目的值,因此 0 然后 1,然后 7,然后 8。因此,当您尝试使用 i 作为索引访问 listOne 和 listTwo 的元素时, 当 i 大于列表中最后一项的位置时,它将失败。
有很多方法可以完成您想要的。你可以这样做
for i in range(4):
listAdd.append(listOne[i] + listTwo[i])
你也可以这样做
for x,y in zip(listOne, listTwo)
listAdd.append(x+y)
这些是一些最类似循环的方法。 leb 和 Donald 展示了上面的列表推导式,Dan 展示了 map。
你错了两件事
- 您在 for 中使用了 listOne 的元素
- 您不能在 for 范围之外创建变量。
看似难,其实很简单
listOne = [0, 1, 7, 8]
listTwo = [3, 4, 5, 6]
for i in listOne:
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
看看你的 for,"i" 变量它假设这个值: 0, 1, 7, 8
那是因为你使用了 "i in listOne",所以,"i" 它假定了 listOne 的值。
正确的做法是:
listOne = [0, 1, 7, 8]
listTwo = [3, 4, 5, 6]
for i in range(len(listOne)):
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
现在 "i" 将采用以下值:“0、1、2、3”,因为现在您在 for 中使用了 listOne 的长度。
但是还有一件事。这有点困难,但你需要知道。
当您在代码块内(在 if、while、for... 内)声明一个变量时,当程序离开该块时它就死掉了。例如:
x = 30
if x is 30:
stringInsideIf = "Hello World"
print(stringInsideIf)
在这个例子中,你会收到错误,因为"stringInsideIf"它没有在 if 块之外声明。
因此,您需要在 for 块之外声明 "listThree" 作为一个新列表,如下所示
listThree = []
我认为它会解决问题
并且不要害怕问基本问题,没有人天生就是程序员
同意其他人的看法,认为有更好的方法(列表理解、内置库等),但这里是最低限度地修复代码的方法:
for i in range(len(listOne)):
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
关键是您正在尝试遍历列表 indices,而不是它的值(这是您从 "for i in listOne:" 获得的值)。
len(listOne) 给出列表的长度(此处:4)
范围(4) -> (0, 1, 2, 3)
for i in listOne -->这里我代表列表的元素而不是索引
listOne = [0, 1 , 7, 8]
listTwo = [3, 4, 5, 6]
listThree = []
for i in range(len(listOne)):
listAdd = (listOne[i] + listTwo[i])
listThree.append(listAdd)
print(listThree)
以上代码可以正常工作。