Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 给定一个非空整数数组nums,除了一个之外,每个元素都会出现两次。找到那个_Python_Arrays - Fatal编程技术网

Python 给定一个非空整数数组nums,除了一个之外,每个元素都会出现两次。找到那个

Python 给定一个非空整数数组nums,除了一个之外,每个元素都会出现两次。找到那个,python,arrays,Python,Arrays,有人能解释一下为什么这个代码不起作用吗?逻辑是,每当我发现一个重复的数字时,我会跳到前面的两个数字,并将该数字与后面的一个数字进行比较 谢谢。在“for循环”过程中,您无法编辑“for循环”将要交互的内容。例如,“对于范围(10)中的i”,意味着我将采用0,1,2,…,9的值。这是无法改变的。即使我以某种方式操纵I,比如“I=I+7”或“I=str(I)”,也不会改变我在每个循环开始时的状态。我不认为使用for循环可以尝试什么,因为就像@rdas提到的那样,通过增加我喜欢的循环,你不能向前跳。如

有人能解释一下为什么这个代码不起作用吗?逻辑是,每当我发现一个重复的数字时,我会跳到前面的两个数字,并将该数字与后面的一个数字进行比较


谢谢。

在“for循环”过程中,您无法编辑“for循环”将要交互的内容。例如,“对于范围(10)中的i”,意味着我将采用0,1,2,…,9的值。这是无法改变的。即使我以某种方式操纵I,比如“I=I+7”或“I=str(I)”,也不会改变我在每个循环开始时的状态。

我不认为使用for循环可以尝试什么,因为就像@rdas提到的那样,通过增加我喜欢的循环,你不能向前跳。如果你想坚持你的想法,那么你最好使用while循环(类似于下面的内容,可能需要更改)

nums.sort()
i=0

正如前面的答案所说,虽然i,但不能在for循环中更改i值

一种选择是对列表使用Python内置的count()函数:

nums.sort()
i = 0
while i <= len(nums)-1:
        if i == len(nums)-1:
                print(nums[i])
                break
        if nums[i] == nums[i+1]:
                i += 2
        else:
                print(nums[i])
                break
另一种解决方案是在collections包中使用counter方法,迭代数组项并检查计数是否等于1:

for x in nums:
    if list(nums).count(x) == 1: 
        print(x)

python中的For循环与C中的For循环不同。这样增加
i
是不可能的
i
将始终从
范围()中获取下一个值。
for x in nums:
    if list(nums).count(x) == 1: 
        print(x)
[x for x, count in collections.Counter(nums).items() if count == 1][0]