a = ['long','short','long']
b = [2,3,4]
c=[]
for i in a:
for y in b:
if i == 'long':
c.append(-y)
else:
c.append(y)
print(c)
我想得到 c[-2,3,4]
但是却返回[-2, -3, -4, 2, 3, 4, -2, -3, -4]
你应该想得到 c[-2,3,-4]吧,代码如下,有用请点一下采纳谢谢
a = ['long','short','long']
b = [2,3,4]
c=[]
for i, y in zip(a,b):
if i == 'long':
c.append(-y)
else:
c.append(y)
print(c)
你用的是双循环,3*3不就是9个元素么
第三个也是long,哪b中的4不应该也是-4么,为什么你想得到的是c[-2,3,4]呢?
a = ['long', 'short', 'long']
b = [2, 3, 4]
c = []
for i in range(len(a)):
if a[i] == 'long':
c.append(-b[i])
else:
c.append(b[i])
print(c)
这样输出[-2,3,4]是你要的不
你这是双重循环了,在遍历a的元素时,每遍历一个a内元素遍历一遍b,所以变成了3*3的结果
可以用zip,或者遍历的时候用下标同时访问,总之只需要一次遍历
你的那两个for循环嵌套了,你第一个for循环每遍历一个值,第二个for循环都会把2 3 4全部遍历一遍,所以2 3 4在你的程序里面会遍历3次,共9个数。
解决方案:把那两个for循环和在一起写就行了。
因为双循环,每个都有3个元素,所以循环下来就是3*3=9,c的元素个数自然就是9。
既然输出结果为c[-2,3,4],则使用b列表循环即可。增加控制条件即可,如下:
a = ['long','short','long']
b = [2,3,4]
c=[]
for y in b:
if y<len(a) and a[y] == 'long':
c.append(-y)
else:
c.append(y)
print(c)