Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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_Sequence - Fatal编程技术网

Python 非递减序列

Python 非递减序列,python,sequence,Python,Sequence,我正在尝试编写一个简单的python脚本,它将查找所有由正整数相加为7组成的非递减序列。无论我做什么尝试,我的代码似乎都无法正常工作。这是我的 components = [1,2,3,4,5,6,7] ans = [] def sumSeq(seq): sumA = 0 for i in seq: sumA += i return sumA def findSeq(seq): for x in components: if (

我正在尝试编写一个简单的python脚本,它将查找所有由正整数相加为7组成的非递减序列。无论我做什么尝试,我的代码似乎都无法正常工作。这是我的

components = [1,2,3,4,5,6,7]

ans = []

def sumSeq(seq):
    sumA = 0
    for i in seq:
        sumA += i
    return sumA

def findSeq(seq):
    for x in components:
        if (x < seq[-1]):
            continue

        newSeq = seq
        newSeq.append(x)
        sumA = sumSeq(newSeq)

        if (sumA > 7):
            continue

        if (sumA == 7):
            ans.append(newSeq)

        findSeq(newSeq)

findSeq([0])

print ans
components=[1,2,3,4,5,6,7]
ans=[]
def sumSeq(序列号):
sumA=0
对于下文中的i:
sumA+=i
回归苏玛
def findSeq(序号):
对于x英寸组件:
如果(x7):
持续
如果(sumA==7):
ans.append(newSeq)
findSeq(newSeq)
findSeq([0])
打印ans
这条线并不像你想象的那样。具体来说,它不会创建新列表。它只创建一个引用现有列表的新名称。尝试:

newSeq = seq[:]
这条线并不像你想象的那样。具体来说,它不会创建新列表。它只创建一个引用现有列表的新名称。尝试:

newSeq = seq[:]

当您执行以下任务时:

newSeq = seq
实际上,如果将不同的名称(newSeq)绑定到同一对象(seq),则不会创建具有类似值的新对象。因此,当您更改newSeq的内容时,您也会更改seq的内容,因为它们都是存储在内存中的同一对象的别名。 正如Python文档所说:

Python中的赋值语句不复制对象,而是在目标和对象之间创建绑定。对于可变的或包含可变项的集合,有时需要一个副本,以便可以在不更改另一个副本的情况下更改一个副本

因此,您必须使用以下命令更改这行代码:

newSeq = seq.copy()

当您执行以下任务时:

newSeq = seq
实际上,如果将不同的名称(newSeq)绑定到同一对象(seq),则不会创建具有类似值的新对象。因此,当您更改newSeq的内容时,您也会更改seq的内容,因为它们都是存储在内存中的同一对象的别名。 正如Python文档所说:

Python中的赋值语句不复制对象,而是在目标和对象之间创建绑定。对于可变的或包含可变项的集合,有时需要一个副本,以便可以在不更改另一个副本的情况下更改一个副本

因此,您必须使用以下命令更改这行代码:

newSeq = seq.copy()