高义校长 发表于 2020-4-2 16:29:21

关于python数组计算问题

本帖最后由 高义校长 于 2020-4-2 16:35 编辑

有下面3个列表:

a=
b=
c=]

请问用代码如何写才能达到下面的结果。

(1)列表c所有元素求和,得到一个整数21。
(2)列表a和b对应元素相加,得到这样一个列表

永恒的蓝色梦想 发表于 2020-4-2 16:30:22

问题呢???

高义校长 发表于 2020-4-2 16:31:44

永恒的蓝色梦想 发表于 2020-4-2 16:30
问题呢???

不好意思,发太快,就是想问如何实现。

永恒的蓝色梦想 发表于 2020-4-2 16:36:46

高义校长 发表于 2020-4-2 16:31
不好意思,发太快,就是想问如何实现。

问题1def func1(array):
        sum=0
        for i in array:
                if type(i) is list:
                        sum+=func1(i)
                else:
                        sum+=i
        return sum

永恒的蓝色梦想 发表于 2020-4-2 16:39:20

高义校长 发表于 2020-4-2 16:31
不好意思,发太快,就是想问如何实现。

问题2from itertools import zip_longest

def func2(*arrays):
        return

高义校长 发表于 2020-4-2 16:46:14

永恒的蓝色梦想 发表于 2020-4-2 16:39
问题2

非常感谢您。我是一个新手,以前会一点简单的VBA。
您这个是引入新的模块。
请教一下,python是否有数组下标类似的概念:
如:cr(i)=ar(i)+br(i)。

永恒的蓝色梦想 发表于 2020-4-2 16:47:42

高义校长 发表于 2020-4-2 16:46
非常感谢您。我是一个新手,以前会一点简单的VBA。
您这个是引入新的模块。
请教一下,python是否有数 ...

有,比如有这样一个列表a=,a就可以访问到第5个值,也就是5

高义校长 发表于 2020-4-2 16:50:37

永恒的蓝色梦想 发表于 2020-4-2 16:47
有,比如有这样一个列表,就可以访问到第5个值,也就是

那第二个问题是不是可以直接相加。但我这边就提示索引越界了。

永恒的蓝色梦想 发表于 2020-4-2 16:53:31

高义校长 发表于 2020-4-2 16:50
那第二个问题是不是可以直接相加。但我这边就提示索引越界了。

不能,两个数组不一样长,直接加肯定越界

给你一个不导入模块的版本def func2(*its):
    its=map(iter,its)
    temp=[]

    while True:
      sum=0
      flag=True

      for i in its:
            try:
                sum+=next(i)
                flag=False

            except StopIteration:
                pass

      if flag:
            return temp
      
      temp.append(sum)

高义校长 发表于 2020-4-2 16:55:50

永恒的蓝色梦想 发表于 2020-4-2 16:53
不能,两个数组不一样长,直接加肯定越界

给你一个不导入模块的版本

感谢感谢,我还得消化一下。如果出现了3维或以上,是不是比较麻烦。

永恒的蓝色梦想 发表于 2020-4-2 16:59:21

高义校长 发表于 2020-4-2 16:55
感谢感谢,我还得消化一下。如果出现了3维或以上,是不是比较麻烦。

递归 就是应对这种问题的,感兴趣可以搜索一下

高义校长 发表于 2020-4-4 20:35:44

永恒的蓝色梦想 发表于 2020-4-2 16:59
递归 就是应对这种问题的,感兴趣可以搜索一下

前面那个单纯的一维列表我研究出来了,但二级及以上我就研究不清楚了,求助。
第一个问题:
数组所有元素求和:
a=]]
def sm(x):
    return sum(i in x if isinstance(i,int) else sm(i) for i in x)
print(sm(a))
第二个问题就不行了,为什么我第二个问题会报错呢。
a=[,,,5]
b=[,,,5,6]
from itertools import zip_longest
class Arsum:
    def __init__(self,m,n):
      self.m=m
      self.n=n
    def getlst(self):
      return
c=Arsum(a,b)
c.getlst()

高义校长 发表于 2020-4-4 20:48:20

有没有大佬再帮忙看一下,怎么计算。

永恒的蓝色梦想 发表于 2020-4-4 22:51:49

高义校长 发表于 2020-4-4 20:35
前面那个单纯的一维列表我研究出来了,但二级及以上我就研究不清楚了,求助。
第一个问题:
数组所有元 ...

不报错就奇怪了,sum的列表里既有list还有int
还有,没事用什么类from itertools import zip_longest

def flatten(iterable,/):
    for element in iterable:
      if hasattr(element,'__iter__'):
            yield from flatten(element)
      
      else:
            yield element

def Arsum(*v):
    return

a=[,,,5]
b=[,,,5,6]

print(Arsum(a,b))PS:提问新内容记得开新帖,

高义校长 发表于 2020-4-4 23:03:48

永恒的蓝色梦想 发表于 2020-4-4 22:51
不报错就奇怪了,sum的列表里既有list还有int
还有,没事用什么类PS:提问新内容记得开新帖,

非常感谢。
页: [1]
查看完整版本: 关于python数组计算问题