热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在python的class里操作list的奇怪错误

今天在做一个简单的python类时发现一个奇怪的问题,无法正常操作list。以下是代码,主要是写一个类来生成给定数的全排列。

今天在做一个简单的python类时发现一个奇怪的问题,无法正常操作list。
以下是代码,主要是写一个类来生成给定数的全排列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class permutation(object):

    def __init__(self,initArray):

        self.__permResult = []

        if len(initArray) > 1:

            self.generatePerm(0,initArray)

        else :

            self.__permResult = initArray



    def generatePerm(self,i,array):

        if i
            for index in range(i,len(array)):

                array[i],array[index] = array[index],array[i]

                self.generatePerm(i+1,array)

                array[i],array[index] = array[index],array[i]



        else :

            print(array)

            self.__permResult.append(array)

#           changing the above line to:

#           self.__permResult = self.__permResult + array

#           would give me something like [1,2,3,1,3,2,2,1,3,2,3,1,3,1,2,3,2,1]



    def printResult(self):

        print(self.__permResult)



test = permutation([1,2,3])

test.printResult()

但是很奇怪地得到了如下结果

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

[1, 3, 2]

[2, 1, 3]

[2, 3, 1]

[3, 2, 1]

[3, 1, 2]

[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]

全排列是出来了但却没法(通过append方法)添加到__permResult这个list里面,但以前又没遇到过这种奇怪的情况。
虽然我有感觉这是个很蠢的问题,但看了很久也无法找出错误,只好来segmentfault麻烦大家了。谢谢!


然而如果把append方法的参数改成(array[0:]),则可以正常工作。原来的append(array)则不能,这实在太奇怪了。不知道是bug还是feature


推荐阅读
  • 本文详细介绍了Python中的流程控制与条件判断技术,包括数据导入、数据变换、统计描述、假设检验、可视化以及自定义函数的创建等方面的内容。 ... [详细]
  • 使用Objective-C实现苹果官方NSLayoutConstraint页面布局
    本文详细介绍了如何在iOS开发中使用Objective-C语言通过NSLayoutConstraint来实现页面布局。示例代码展示了如何创建和应用约束,以确保界面元素能够正确地响应不同屏幕尺寸的变化。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • 本文探讨了在Qt框架下实现TCP多线程服务器端的方法,解决了一个常见的问题:服务器端仅能与最后一个连接的客户端通信。通过继承QThread类并利用socketDescriptor标识符,实现了多个客户端与服务器端的同时通信。 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
  • LeetCode 363: 寻找不超过K的最大子矩阵和【固定边界+逐步求和+有序列表查询】
    本文探讨了在给定矩阵中寻找一个子矩阵,使其元素和不超过K但尽可能大的问题。通过固定上下边界,逐步计算每列的累积和,并利用有序列表快速查找满足条件的前缀和,以达到算法优化的目的。 ... [详细]
  • 字符、字符串和文本的处理之Char类型
    .NetFramework中处理字符和字符串的主要有以下这么几个类:(1)、System.Char类一基础字符串处理类(2)、System.String类一处理不可变的字符串(一经 ... [详细]
  • 本文探讨了Web API 2中特性的路由机制,特别是如何利用它来构建RESTful风格的URI。文章不仅介绍了基本的特性路由使用方法,还详细说明了如何通过特性路由进行API版本控制、HTTP方法的指定、路由前缀的应用以及路由约束的设置。 ... [详细]
  • 在一个婚礼上,有三对情侣即将步入婚姻的殿堂,分别由A、B、C三位男士与X、Y、Z三位女士组成。为了增添婚礼的乐趣,他们决定互相开玩笑,给出了误导性的信息。A声称他将与X结婚,X则表示她的未婚夫是C,而C说自己会与Z共结连理。然而,事后发现这些话都是假的。现在的问题是,真正的配对关系究竟是怎样的? ... [详细]
  • ECharts图表绘制函数集
    本文档提供了使用ECharts库创建柱状图、饼图和双折线图的JavaScript函数。每个函数都详细列出了参数说明,并通过示例展示了如何调用这些函数以生成不同类型的图表。 ... [详细]
  • 本文探讨了如何从文本文件中正确读取一行数据,并将其赋值给C语言中的变量,同时解决了常见的错误和注意事项。 ... [详细]
  • python 类class学习总结(程序验证,超详细,包括多继承、循环、super().xxx等) ... [详细]
  • 探讨行动的本质及其在个人成长中的作用,强调即时行动的重要性。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
author-avatar
无声无无为爱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有