精华内容
下载资源
问答
  • Python 数组切片是否存在越界 今天在刷leetecode时注意到这个问题。 # Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None 是一道...

    Python 数组切片是否存在越界

    今天在刷leetecode时注意到这个问题。
    一道关于最小高度树的简单题

    # Definition for a binary tree node.
    class TreeNode:
         def __init__(self, x):
             self.val = x
             self.left = None
             self.right = None
    

    是一道关于最小高度树的简单题,解题思路很清晰,从root开始顺左右子树递归,不断返回中位数作为新的root直到数组为空。

    左右子树的有序数列是通过切片原数组得到的,在最初的实现中,为防止数组越界而后置了条件判断语句:

    class Solution:
        def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
            if not len(nums): 
                return 
            mid = len(nums)//2
            root = TreeNode(nums[mid]) 
            root.left = self.sortedArrayToBST(nums[:mid]) if mid > 0 else None
            root.right = self.sortedArrayToBST(nums[mid+1:]) if mid < len(nums) else None
            return root
    

    后来发现python中对数组进行切片时,例如:
    len(list) = 5,sub_list = list[4:8],返回的sub_list中实际只包含了list[4],而不是发生数组越界错误。若 sub_list[10:],则返回的是一个空list (注意,不是None)。

    故重新简化代码:

    class Solution:
        def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
            if not len(nums): 
                return 
            mid = len(nums)//2
            root = TreeNode(nums[mid]) 
            root.left = self.sortedArrayToBST(nums[:mid]) 
            root.right = self.sortedArrayToBST(nums[mid+1:])
            return root
    
    展开全文
  • python数组切片 from numpy import array from math import log10 from matplotlib.pyplot import plot,show a=[] for i in range(1,100): a.append((i/100,log10(i/100))) a=array(a) a1=a[...,0] #切出来第一列 ...

    python数组切片

    # encoding:utf-8
    from numpy import array,max,min
    from math import log10
    from matplotlib.pyplot import (plot,show,xlabel,ylabel,xlim,ylim)
    a=[]
    for i in range(1,100000):
        a.append((i/100,log10(i/100)))
    a=array(a)
    a1=a[...,0]  #切出来第一列
    a2=a[...,1]  #切出来第二列
    a1=a1.tolist()
    a2=a2.tolist()
    plot(a1,a2)
    xlabel("x")
    ylabel("y")
    xlim(min(a1),max(a1))
    ylim(min(a2),max(a2))
    show()
    

    在这里插入图片描述

    展开全文
  • Python数组切片用法详解

    千次阅读 2018-12-25 17:58:11
    Python使用过程中,经常用到切片,本文总结了一下切片的用法。

    在Python使用过程中,经常用到切片,本文总结了一下切片的用法。

    ASCII art diagram,帮助理解Python切片:

     +---+---+---+---+---+---+
     | P | y | t | h | o | n |
     +---+---+---+---+---+---+
     0   1   2   3   4   5   6
    -6  -5  -4  -3  -2  -1
    
    >>> a = ['P','y','t','h','o','n']
    >>> a[0:1]
     ['P']
    >>> a[1:3]
     ['y','t']
     
    >>> a[-2:-1]
     ['o']
    >>> a[:-1]
     ['P', 'y', 't', 'h', 'o']
    

    不带步长step参数的切片,步长默认为1:

    a[start:stop]  # 返回从stop-1开始到stop的元素
    a[start:]      # 返回从start开始的剩余部分
    a[:stop]       # 去掉最后stop个元素并返回剩余元素
    a[:]           # 复制数组a
    

    带步长step参数的切片:

    a[start:stop:step] 
    

    索引为复数的切片:

    a = ['P','y','t','h','o','n']
    a[-1]    # 返回数组中最后一个元素 -->'n'
    a[-2:]   # 返回数组中最后两个元素 -->['o', 'n']
    a[:-2]   # 去掉数组中最后两个元素并返回剩余元素 -->['P', 'y', 't', 'h']
    

    步长为复数的切片:

    a[::-1]    # 颠倒数组中的元素并返回 -->['n', 'o', 'h', 't', 'y', 'P']
    a[1::-1]   # 颠倒数组中的前两个元素并返回 -->['y', 'P']
    a[:-3:-1]  # 颠倒最后两个元素并返回 -->['n', 'o']
    a[-3::-1]  # 颠倒除最后两个元素以外的元素并返回 -->['h', 't', 'y', 'P']
    

    与slice()对象的关系:以下两种用法是相同的

    a[start:stop:step] 
    
    a[slice(start, stop, step)]
    

    与索引(index)的区别:
    ASCII art diagram 帮助理解二者区别:

                    +---+---+---+---+---+---+
                    | P | y | t | h | o | n |
                    +---+---+---+---+---+---+
    Slice position: 0   1   2   3   4   5   6
    Index position:   0   1   2   3   4   5
    
    >>> a = ['P','y','t','h','o','n']
    # 索引
    >>> a[0]
     'P'
    >>> a[5]
     'n'
    # 切片
    >>> a[0:1]
     ['P']
    >>> a[0:2]
     ['P','y']
    

    另一种理解方式:


    步长为正:

    
    >>> seq[:]                # [seq[0],   seq[1],          ..., seq[-1]    ]
    >>> seq[low:]             # [seq[low], seq[low+1],      ..., seq[-1]    ]
    >>> seq[:high]            # [seq[0],   seq[1],          ..., seq[high-1]]
    >>> seq[low:high]         # [seq[low], seq[low+1],      ..., seq[high-1]]
    >>> seq[::stride]         # [seq[0],   seq[stride],     ..., seq[-1]    ]
    >>> seq[low::stride]      # [seq[low], seq[low+stride], ..., seq[-1]    ]
    >>> seq[:high:stride]     # [seq[0],   seq[stride],     ..., seq[high-1]]
    >>> seq[low:high:stride]  # [seq[low], seq[low+stride], ..., seq[high-1]]
    

    步长为负:

    >>> seq[::-stride]        # [seq[-1],   seq[-1-stride],   ..., seq[0]    ]
    >>> seq[high::-stride]    # [seq[high], seq[high-stride], ..., seq[0]    ]
    >>> seq[:low:-stride]     # [seq[-1],   seq[-1-stride],   ..., seq[low+1]]
    >>> seq[high:low:-stride] # [seq[high], seq[high-stride], ..., seq[low+1]]
    

    参考:
    https://stackoverflow.com/questions/509211/understanding-slice-notation
    https://www.w3schools.com/python/ref_func_slice.asp
    https://www.geeksforgeeks.org/python-slice-function/

    展开全文
  • 代表从数组x的第1索引到第10索引(包含1,不包含10),以步长为2,切片切片结果为:[1,3,5,7,9] 每一维都有[a:b:c],由两个冒号隔开,a,b该维的索引,从a到b,不包括b。c为步长,默认为1。多维就用,逗号隔开...

    格式都一样

    x = [0,1,2,3,4,5,6,7,8,9,10]
    x[1:10:2]
    代表从数组x的第1索引到第10索引(包含1,不包含10),以步长为2,切片。
    切片结果为:[1,3,5,7,9]

    在这里插入图片描述

    每一维都有[a:b:c],由两个冒号隔开,a,b该维的索引,从a到b,不包括b。c为步长,默认为1。多维就用,逗号隔开,如[a:b:c,d:e:f]表示二维的。

    展开全文
  • 1、数组a第0个元素(二维数组)下的所有子元素(一维数组)的第一列import numpy as npb=np.arange(24)a=b.reshape(2,3,4)print aprint a[0,:,0]2、取所有二维数组下的每个二维数组的第0个元素(一维数组)b=np.a...
  • 本文主要向大家介绍了python语言多维数组切片方法,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。1、数组a第0个元素(二维数组)下的所有子元素(一维数组)的第一列import numpy as npb=np.arange...
  • 下面小编就为大家分享一篇python多维数组切片方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python-数组切片

    万次阅读 2018-09-23 16:07:39
    Python-数组切片 在SegmentFault上遇到一个问题,发现自己也不懂,找了资料弄懂了,翻译一下,加深印象。 本文翻译自usc.edu slicing-arrays 基于维度的切片 Python的切片可以被用于数组,它基于每一个维度。...
  • 今天小编就为大家分享一篇对Python 数组切片操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python数组_Python数组

    2020-07-14 13:54:52
    python数组Python Array contains a sequence of data. In python programming, there is no exclusive array object because we can perform all the array operations using list. Today we will learn about ...
  • 1. 本文介绍今天为大家介绍以下内容:Ⅰ Python原生切片,与numpy数组切片,有哪些不同?Ⅱ numpy中,应该如何使用切片?2. Python原生切片,与numpy数组切片,有哪...
  • python 多维数组切片

    2018-06-15 17:40:54
    关于python多维数组切片,最近在查阅网页资料时,发现了几个不错的示意图。如下:附上矩阵点乘的一个示意图:附上部分网页,仅供参考。科学计算与机器学习有关的库: 来自百度百家,列举了科学计算与机器学习相关库...
  • python数组切片

    2020-06-30 16:13:12
    数组切片[;,i] [i,:j,:k] 解释 “ .” 分隔各个维度 “:” 各个维度内的切片 1. 二维数组 import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) #<class 'numpy.ndarray'> print(a) """ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,087
精华内容 13,234
关键字:

python数组切片

python 订阅