无法在lis中放入3个总和为0的数字

2024-03-29 12:15:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的名为myList的列表没有更新。你知道吗

我在一个函数中定义它,在这个函数中使用它

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        myList = []
        a = []
        for i in range(len(nums)):
           # print("---i",nums[i])
        #    print(a[0])
            for j in range(i+1,len(nums)):
             #   print("----j",nums[j])
                for k in range(i+2,len(nums)):
                #    print("-----k",nums[k])
                    if nums[i]+nums[j]+nums[k] == 0:
                        print("m into it now for i",nums[i],"j",nums[j],"k",nums[k])
                        print("oooo",myList)
                        a.append(nums[i])
                        a.append(nums[j])
                        a.append(nums[k])
                  #      print(myList)
                        myList.append(a)
                        print("....",myList)
                        print("---",a)
                        a.clear()
        print(myList)

获取输出为:

[[], [], [], []]

Tags: 函数in列表forlen定义rangelist
1条回答
网友
1楼 · 发布于 2024-03-29 12:15:16

Python将一切都视为对象。 当你有这样的清单:

my_list = [1,2,3]

这里my_list是对存储在内存中的列表[1,2,3]的引用。你知道吗

现在,如果您将my_list传递给任何其他函数或在任何其他对象中使用它,就像您在myList中附加了a,那么这里基本上python使用它作为对原始列表的引用。现在myList已经在里面存储了a的引用。 这就是为什么清除a的内容时,它也会影响myList的内容。你知道吗

您不必清除lista的内容。就像这样每次在for循环中重新初始化它。你知道吗

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        myList = []
        for i in range(len(nums)):
           # print(" -i",nums[i])
           # print(a[0])
            for j in range(i+1,len(nums)):
             # print("  j",nums[j])
                for k in range(i+2,len(nums)):
                    # print("  -k",nums[k])
                    if nums[i]+nums[j]+nums[k] == 0:
                        print("m into it now for i",nums[i],"j",nums[j],"k",nums[k])
                        print("oooo",myList)
                        a = []
                        a.append(nums[i])
                        a.append(nums[j])
                        a.append(nums[k])
                        # print(myList)
                        myList.append(a)
                        print("....",myList)
                        print(" -",a)
        print(myList)

更新: 正如Artog在评论中提到的

通过在函数末尾运行print(list(map(hex,map(id, myList)))),您可以很容易地看到这一点。这将显示内存地址与原始代码的所有条目相同,但与新代码不同。你知道吗

相关问题 更多 >