栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python轮转数组及nums和nums[:]的区别

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python轮转数组及nums和nums[:]的区别

文章目录

189. 轮转数组

nums和nums[:]python数组两元素互换其值a=[None] * n创建列表异或^:

本文主要利用leetcode上的189. 轮转数组来解剖其涉及到的a=[None] * n,nums[:]等相关知识。

189. 轮转数组

给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

题解:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        arr = [None]*len(nums)
        for i in range(len(nums)):
            arr[(i+k) % len(nums)] = nums[i]
        nums[:] = arr

        #方法2:
        # n = len(nums)
        # k = k % n
        # nums[:] = nums[n - k:] + nums[:n - k]

        #方法3:
        # n = len(nums)
        # k %= n
        # nums.reverse()
        # nums[:k] = list(reversed(nums[:k]))
        # nums[k:] = list(reversed(nums[k:]))

        # 方法4:
        # for i in range(k):
        #     nums.insert(0,nums[-1])
        #     del nums[-1]
nums和nums[:]

nums = A: 更改nums这一变量名所指的对象,让nums变量指向A所指向的对象。nums[:] = A: 对nums指向的对象赋值,把A变量指向的对象的值逐个复制到nums指向的对象中并覆盖nums指向的对象的原来值。nums[:] 等价于 nums[0:len(nums)] 相当于取nums对应对象的一个视图,通过用这个来改变原对象的某几位值。
如:A[:2] = [0, 1],改变了A所指向的list对象的前两个值。
A = [0 ,1],让A这一变量名指向新的List对象[0,1]
此处参考加深理解:参考文章 python数组两元素互换其值

nums = [1,2,3,4,5,6,7]
nums[0], nums[4] = nums[4], nums[0]
print(nums)#[5, 2, 3, 4, 1, 6, 7]
a=[None] * n创建列表

如果用a = [] 创建数组的话用到a[1]时会报错:IndexError: list assignment index out of range,所以会用到a=[None] * n,n为要创建的数组长度

grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
m, n = len(grid), len(grid[0])#m行n列
a=[False] * n
print(a)#[False, False, False, False]
vis = [[False] * n for _ in range(2)]
print(vis)#[[False, False, False, False], [False, False, False, False]]
异或^:

如果是一个偶数^1,那么答案是该偶数+1.如果是一个奇数^1,那么答案是该奇数-1

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号