Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python迭代到第二个数组的末尾_Python_List_Python 3.x_Tuples - Fatal编程技术网

使用python迭代到第二个数组的末尾

使用python迭代到第二个数组的末尾,python,list,python-3.x,tuples,Python,List,Python 3.x,Tuples,我做过这样的事情: d = [('e', 0), ('f', 1), ('e', 0), ('f', 1)] e = ['a'] d = [(n,j) for n,(i,j) in zip(e,d)] d [('a',0)] d [('a', 0), ('f', 1), ('e', 0), ('f', 1)] 我只是想用数组值替换等价的元组值,而不改变相关的数字。但是这个列表只到数组e的len,而不是d。我想要得到的输出是这样的: d = [('e', 0), ('f', 1), ('e',

我做过这样的事情:

d = [('e', 0), ('f', 1), ('e', 0), ('f', 1)]
e = ['a']
d = [(n,j) for n,(i,j) in zip(e,d)]
d
[('a',0)]
d
[('a', 0), ('f', 1), ('e', 0), ('f', 1)]
我只是想用数组值替换等价的元组值,而不改变相关的数字。但是这个列表只到数组
e
的len,而不是
d
。我想要得到的输出是这样的:

d = [('e', 0), ('f', 1), ('e', 0), ('f', 1)]
e = ['a']
d = [(n,j) for n,(i,j) in zip(e,d)]
d
[('a',0)]
d
[('a', 0), ('f', 1), ('e', 0), ('f', 1)]

只需将未处理的
d
尾部添加到已处理零件:

[(n,j) for n,(i,j) in zip(e,d)] + d[len(e):]
#[('a', 0), ('f', 1), ('e', 0), ('f', 1)]

您可以使用
itertools.zip\u

[(n or i, j) for n,(i,j) in itertools.zip_longest(e, d)]

检查一下

我想问题出在zip函数上。文档中说(zip)“返回元组迭代器,其中第i个元组包含每个参数序列或iterable中的第i个元素。当最短的输入iterable用完时,迭代器停止。”


[(n,j)for n,(i,j)in-zip(e,d)]+d[len(e):]
应该可以做到这一点如果可以接受对原始
d
列表进行变异,我只需通过迭代
e
来替换第一个
d
元组:

d = [('e', 0), ('f', 1), ('e', 0), ('f', 1)]
e = ['a']

for i, new_letter in enumerate(e):
    d[i] = (new_letter, d[i][1])

print(d)
# [('a', 0), ('f', 1), ('e', 0), ('f', 1)]
请注意,Python元组是不可变的
d[i][0]=新字母
将失败并出现错误:

TypeError:“tuple”对象不支持项分配


上面的代码修改了
d
列表,用新元组替换旧元组。它无法修改旧元组。

@Jean Françoisfare,是的,我没有看到py3标签,谢谢!您可以删除
fillvalue=None
,因为这是默认设置。感谢您的解释。但是让我来编辑你的文章,使其格式正确。我也试过了。它给我的错误是:
“tuple”对象不支持项目分配
,因此我强烈地拒绝了这个想法,我的上帝。它也起作用了。我仍然怀疑自己犯了什么错,而我之前也遵循了类似的过程。是的。。我得到了它。问题在于我所做的赋值。您已经这样分配了值
d[i]=(新字母,d[i][1])
其中,我这样分配
d[i][0]=新字母