我有两个列表,都有128个项目:
a = [0,1,2,3,...] b = [6.4,53.8,-5.2,7.1,...]
我必须通过两次检查来运行列表b:
如果check1为真,则b [n] = b [n] -50,并且a [n] = a [n] +1 如果check2为真,则b [n] = b [n] +100,并且a [n] = a [n] -1
我无法弄清楚如何将每个列表中的两个项目绑定在一起,以便列表b [n]中的更改也会触发列表中的更改a [n]
使用此示例,在通过2个检查运行这些列表之后:
a = [0,2,1,3,...] b = [6.4,3.8,94.8,7.1,...]
我只用了几周的时间用python进行编程,而且我完全没有编码的经验。我一直在阅读迭代器,地图,循环等等,但我似乎无法使这个序列的语言正确。
看起来很容易,但我被困住了!
感谢,
乔尔。
答案 0 :(得分:5)
使用zip
从两个列表中生成一对相应的项目并处理每一对。您可以使用生成器理解来获取所有已处理的对,并再次使用zip
来获取列表。
def process(a, b):
if b > 50:
a += 1
b -= 50
elif b < 0:
a -= 1
b += 100
return (a, b)
def process_all(as, bs):
# Notice the '*' here. 'zip' takes multiple arguments;
# the '*' forces evaluation of the generator, and expands the resulting
# sequence into several arguments.
return zip(*(process(a, b) for (a, b) in zip(as, bs)))
答案 1 :(得分:3)
只是
有什么问题for i in range(len(a)):
if b[i] > 50.0:
b[i] -= 50.0
a[i] += 1
elif b[i] < 0.0:
b[i] += 100.0
a[i] -= 1