如何在这个简单的Python作业中进行调试?
我需要一点帮助来解决学校使用python的家庭作业问题。提示非常简单,但我似乎无法理解如何在这个简单的Python作业中进行调试?,python,list-comprehension,Python,List Comprehension,我需要一点帮助来解决学校使用python的家庭作业问题。提示非常简单,但我似乎无法理解 ''' rem(A,B) returns the list [A[0]%B[0], A[1]%B[1], ...] etc >>> rem( (10,20,30), (7,8,9) ) [3, 4, 3] >>> X = [ i for i in range(10,18) ] >>> Y = [ j+3 for j in
'''
rem(A,B) returns the list
[A[0]%B[0], A[1]%B[1], ...] etc
>>> rem( (10,20,30), (7,8,9) )
[3, 4, 3]
>>> X = [ i for i in range(10,18) ]
>>> Y = [ j+3 for j in range(8) ]
>>> rem(X,Y)+["?"]
[1, 3, 2, 1, 0, 7, 7, 7, '?']
>>> rem( [5,3], [3,2] )
[2, 1]
>>> rem( [10,9], [5,4] )
[0, 1]
'''
我已经创建了这段代码,这段代码可以工作,但并不完全有效:
def rem(A,B):
return [A[0] % b for b in B]
目前,定义正在运行,但仅适用于每个序列中的第一个值。我认为这是由于
A[0]
-我需要一些方法来实现A[x+1]
,但我不确定。另外,我非常确定我必须在定义中的某个地方使用range()
。您需要将A
的每个元素与其B
中对应的元素配对,然后对它们进行修改
[x % y for (x, y) in zip(A, B)]
您需要将
A
的每个元素与其B
中对应的元素配对,然后对它们进行修改
[x % y for (x, y) in zip(A, B)]
是正确的,也是最具Python风格的,这是更基本的方式:
def rem(a,b):
l = []
for x in range(len(a)):
l.append(a[x]%b[x])
return l
看到评论了 是正确的,也是最具python风格的,这是更基本的方式:
def rem(a,b):
l = []
for x in range(len(a)):
l.append(a[x]%b[x])
return l
看到评论了 询问者已经熟悉LCs。我的回答简单地说明了迭代过程中的
zip()
和元组解包,这是最后两个缺少的概念。请不要编写迭代范围(len(…)@IgnacioVazquez Abrams)的代码你说得对,他对这些代码很熟悉。很抱歉但是为什么不range(len())
它不是向前兼容的呢?或者你为什么这么说?正如我所说的,我认为你的答案更好,我只是想添加另一个选项。使用range(len(…)
需要多个索引操作来检索对象,而不是zip()
(或itertools.izip()
)直接公开对象。@IgnacioVazquez Abrams谢谢你的建议,我会仔细阅读。我多次看到这种迭代方式,我认为它是“正确的”或有效的。再次感谢你的建议!询问者已经熟悉LCs。我的回答简单地说明了迭代过程中的zip()
和元组解包,这是最后两个缺少的概念。请不要编写迭代范围(len(…)@IgnacioVazquez Abrams)的代码你说得对,他对这些代码很熟悉。很抱歉但是为什么不range(len())
它不是向前兼容的呢?或者你为什么这么说?正如我所说的,我认为你的答案更好,我只是想添加另一个选项。使用range(len(…)
需要多个索引操作来检索对象,而不是zip()
(或itertools.izip()
)直接公开对象。@IgnacioVazquez Abrams谢谢你的建议,我会仔细阅读。我多次看到这种迭代方式,我认为它是“正确的”或有效的。再次感谢你的建议!