精华内容
下载资源
问答
  • 数组:$arr = array(".", ".", "0001", "0002");var_dump($arr);结果:array(4) {[0] =>string(1) "."[1] =>string(2) ".."[2] =>string(4) "0001"[3] =>string(4) "0002"}需要把值为”.”和”..”的...

    数组:

    $arr = array(".", ".", "0001", "0002");

    var_dump($arr);

    结果:

    array(4) {

    [0] =>

    string(1) "."

    [1] =>

    string(2) ".."

    [2] =>

    string(4) "0001"

    [3] =>

    string(4) "0002"

    }

    需要把值为”.”和”..”的删掉

    方法一:

    unset($arr[0]);

    unset($arr[1]);

    var_dump($arr);

    结果:

    array(2) {

    [2] =>

    string(4) "0001"

    [3] =>

    string(4) "0002"

    }

    重新排序:

    $list = array_merge($arr);

    var_dump($list);

    结果:

    array(2) {

    [0] =>

    string(4) "0001"

    [1] =>

    string(4) "0002"

    }

    方法二直接删除并排序:

    array_splice($arr, 0, 2);

    var_dump($arr);

    结果:

    array(2) {

    [0] =>

    string(4) "0001"

    [1] =>

    string(4) "0002"

    }

    专注于 服务器运维与web架构

    E-mail:venus#rootop.org

    展开全文
  • 这个属于PHP操作数组的基本应用,但是小应用有大用途,而且一不留心操作错了,还可能...但是多测试几个后就出现问题了,仔细检查后发现unset虽然删掉了指定键值的数组元素,但是这个函数返回的结果原来的兼职序列不...

    fc6e41f33e6bbd461cea80d865020519.png

    这个属于PHP操作数组的基本应用,但是小应用有大用途,而且一不留心操作错了,还可能给你造出意想不到的bug。

    最近写程序的时候要拼装一个检索数组,要求每个栏目的检索条件还不一样,于是乎将获取到的检索条件数组把不属于该栏目的剔除,开始想都没想直接用了unset,测试了一下,没问题;但是多测试几个后就出现问题了,仔细检查后发现unset虽然删掉了指定键值的数组元素,但是这个函数返回的结果原来的兼职序列不变,而我要的是自动更新。

    demo:

    $arr=['aaaa','bbbb','cccc','dddd'];

    unset($arr[1]);

    输出结果:

    Array (

    [0] => "aaaa"

    [2] => "cccc"

    [3] => "dddd"

    )

    如果你想让数组重新排列,按照索引连续的排序,可以使用array_values函数。

    array_values($arr);

    这样你就会等到一个连续索引的数组了:

    Array (

    [0] => "aaaa"

    [1] => "cccc"

    [2] => "dddd"

    )

    当然也可以使用array_splice函数(删除一个元素,不保持索引),一步达成,示例如下:

    $arr=['aaaa','bbbb','cccc','dddd'];

    array_splice($arr,1,1);

    上面示例代码中,array_splice第二个参数是必需的,是要删除元素的开始位置, 0表示第一个元素, 如果该值设置为正数,则从数组中该值指定的偏移量开始移除。如果该值设置为负数,则从数组末端倒数该值指定的偏移量开始移除。 -2 意味着从数组的倒数第二个元素开始。

    结果:

    Array (

    [0] => "aaaa"

    [1] => "cccc"

    [2] => "dddd"

    )

    array_diff()函数:按值删除多个元素,保持索引,与 unset 类似,array_diff 也将保持索引。

    $arr = ['aaaa','bbbb','cccc','dddd'];

    $res = arrar_diff($arr,['aaaa','cccc']);

    var_dump($arr);

    输出结果:

    Array (

    [1] => "bbbb"

    [3] => "dddd"

    )

    array_diff_key() 函数用于比较两个(或更多个)数组的键名 ,并返回差集。 该函数比较两个(或更多个)数组的键名,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名。

    $a1=array("a"=>"red","b"=>"green","c"=>"blue");

    $a2=array("a"=>"red","c"=>"blue","d"=>"pink");

    $result=array_diff_key($a1,$a2);

    print_r($result);

    结果:Array ( [b] => green )

    根据自己实际需要进行选择就是了。

    展开全文
  • 1、find:可以找到逻辑真的位置 2、如何删掉数组中的负值? 里面有两种方法: a(find(a<0))=[]; %找位置 ...5、如何在矩阵中找到某个元素的行数和列数,而不是它的序号。 ind2sub函数的用法 ...

    1、find:可以找到逻辑真的位置
    在这里插入图片描述
    2、如何删掉数组中的负值?
    里面有两种方法:
    a(find(a<0))=[]; %找位置
    a(a<0)=[] %用逻辑值 这个效率更高
    在这里插入图片描述
    3、如何求0到1转换的位置和次数?
    在这里插入图片描述
    4、求任意两个数字之间的转换次数:
    在这里插入图片描述

    5、如何在矩阵中找到某个元素的行数和列数,而不是它的序号。
    ind2sub函数的用法
    在这里插入图片描述

    展开全文
  • 相关函数列表如下:函数元素及描述resize返回指定形状的新数组append将值添加到数组末尾insert沿指定轴将值插入到指定下标之前delete删掉某个轴的子数组,并返回删除后的新数组unique查找数组内的唯一元素1) ...

    数组元素的添加与删除 相关函数列表如下:

    函数

    元素及描述

    resize

    返回指定形状的新数组

    append

    将值添加到数组末尾

    insert

    沿指定轴将值插入到指定下标之前

    delete

    删掉某个轴的子数组,并返回删除后的新数组

    unique

    查找数组内的唯一元素

    1)

    math?formula=%5Ccolor%7Bred%7D%7Bnumpy.resize%7D 返回指定大小的新数组

    numpy.resize(arr, shape)

    arr:要修改大小的数组

    shape:返回数组的新形状

    新数组小于原始数组

    >>> import numpy as np

    >>> a = np.array([[1,2,3],[4,5,6]])

    >>> a

    array([[1, 2, 3],

    [4, 5, 6]])

    >>> b = np.resize(a,(2,2))

    >>> b

    array([[1, 2],

    [3, 4]])

    新数组大于原始数组

    >>> import numpy as np

    >>> a = np.array([[1,2,3],[4,5,6]])

    >>> a

    array([[1, 2, 3],

    [4, 5, 6]])

    >>> c = np.resize(a,(3,3))

    >>> c

    array([[1, 2, 3],

    [4, 5, 6],

    [1, 2, 3]])

    >>> d = np.resize(a,(3,4))

    >>> d

    array([[1, 2, 3, 4],

    [5, 6, 1, 2],

    [3, 4, 5, 6]])

    总结:

    如果新数组大小小于原始大小,会默认按行对原始数组进行取值,直到取够为止

    如果新数组大小大于原始大小,会默认按行重复使用原始数组中的元素,会包含原始数组中的元素的副本。

    2)

    math?formula=%5Ccolor%7Bred%7D%7Bnumpy.append%7D 在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中。 此外,输入数组的维度必须匹配否则将生成ValueError。

    numpy.append(arr, values, axis=None)

    arr:输入数组

    values:要向arr添加的值,需要和arr形状相同(除了要添加的轴)

    axis:默认为 None

    当axis=None时,是横向加成,对添加的元素的个数和类型无要求,返回总是为一维数组

    当axis=0时,增加的是原始数组的行数,因此添加的列表必须是二维[[]]。若要添加一行,子列表元素个数是1[[]],添加二行,子列表元素个数是2[[],[]]。子列表元素个数要与原始数组的列数相同。

    当axis=1时,增加的是原始数组的列数,因此添加的列表元素个数要与原始数组的行数相同,增加的列数取决于子列表的元素个数

    不定义axis,返回的都是一维数组

    >>> import numpy as np

    >>> a = np.array([[1,2,3],[4,5,6]])

    >>> a

    array([[1, 2, 3],

    [4, 5, 6]])

    >>> np.append(a, [7,8])

    array([1, 2, 3, 4, 5, 6, 7, 8])

    >>> np.append(a, [7,8,9])

    array([1, 2, 3, 4, 5, 6, 7, 8, 9])

    ''' 尝试添加多维数组'''

    >>> np.append(a, [[7,8],[9,]])

    array([1, 2, 3, 4, 5, 6, list([7, 8]), list([9])], dtype=object)

    定义axis=0

    >>> import numpy as np

    >>> a = np.array([[1,2,3],[4,5,6]])

    >>> a

    array([[1, 2, 3],

    [4, 5, 6]])

    '''沿轴 0 添加元素,即增加原始数组的行数'''

    >>> np.append(a, [[7,8,9]],axis = 0)

    array([[1, 2, 3],

    [4, 5, 6],

    [7, 8, 9]])

    >>> np.append(a, [[7,8,9],[10,11,12]],axis = 0)

    array([[ 1, 2, 3],

    [ 4, 5, 6],

    [ 7, 8, 9],

    [10, 11, 12]])

    定义axis=1

    >>> import numpy as np

    >>> a = np.array([[1,2,3],[4,5,6]])

    >>> a

    array([[1, 2, 3],

    [4, 5, 6]])

    '''沿轴 1 添加元素,即增加原始数组的列数'''

    >>> np.append(a, [[7],[8]],axis = 1)

    array([[1, 2, 3, 7],

    [4, 5, 6, 8]])

    >>> np.append(a, [[7,9],[8,10]],axis = 1)

    array([[ 1, 2, 3, 7, 9],

    [ 4, 5, 6, 8, 10]])

    3)

    math?formula=%5Ccolor%7Bred%7D%7Bnumpy.insert%7D 用法和 numpy.append类似,但没有append严格

    numpy.insert(arr, obj, values, axis)

    arr:输入数组

    obj:在其之前插入值的索引

    values:要插入的值

    axis:沿着它插入的轴,如果未提供,则输入数组会被展开

    不传递axis参数时,是横向加成,添加对象是单个元素或者是一维数组(列表),可以是一个元素,也可以是一个列表(包含1个以上元素),返回总是为一维数组

    当axis=0时,添加对象可以是1个元素或者数组,当为数组时,添加的数组维度可以是(1,1)或者和原始数组相等,但不能大或者不等

    当axis=1时,添加对象可以是1个元素或者数组,当为数组时,添加数组的维度可以是(1,1),或者必须原始数组列数相同,但不能大或者不等

    numpy.insert添加的对象可以是一个元素或者数组

    未传递 axis 参数,生成的是一维数组

    >>> import numpy as np

    >>> a = np.array([[1,2],[3,4],[5,6]])

    >>> a

    array([[1, 2],

    [3, 4],

    [5, 6]])

    >>> np.insert(a,3,11)

    array([ 1, 2, 3, 11, 4, 5, 6])

    >>> np.insert(a,3,[11,12])

    array([ 1, 2, 3, 11, 12, 4, 5, 6])

    >>> np.insert(a,3,[11,12,13])

    array([ 1, 2, 3, 11, 12, 13, 4, 5, 6])

    定义axis=0

    >>> np.insert(a,1,11,axis = 0)

    array([[ 1, 2],

    [11, 11],

    [ 3, 4],

    [ 5, 6]])

    >>> np.insert(a,1,[11],axis = 0)

    array([[ 1, 2],

    [11, 11],

    [ 3, 4],

    [ 5, 6]])

    >>> np.insert(a,1,[11,12],axis = 0)

    array([[ 1, 2],

    [11, 12],

    [ 3, 4],

    [ 5, 6]])

    >>> np.insert(a,1,[[11,12],[13,14]],axis = 0)

    array([[ 1, 2],

    [11, 12],

    [13, 14],

    [ 3, 4],

    [ 5, 6]])

    >>> np.insert(a,1,[11,12,13],axis = 0)

    Traceback (most recent call last):

    ValueError: could not broadcast input array from shape (1,3) into shape (1,2)

    定义axis=1

    >>> np.insert(a,1,11,axis = 1)

    array([[ 1, 11, 2],

    [ 3, 11, 4],

    [ 5, 11, 6]])

    >>> np.insert(a,1,[11],axis = 1)

    array([[ 1, 11, 2],

    [ 3, 11, 4],

    [ 5, 11, 6]])

    >>> np.insert(a,1,[11,12],axis = 1)

    Traceback (most recent call last):

    ValueError: could not broadcast input array from shape (2,1) into shape (3,1)

    >>> np.insert(a,1,[11,12,13],axis = 1)

    array([[ 1, 11, 2],

    [ 3, 12, 4],

    [ 5, 13, 6]])

    >>> np.insert(a,1,[[11],[12],[13]],axis = 1)

    array([[ 1, 11, 12, 13, 2],

    [ 3, 11, 12, 13, 4],

    [ 5, 11, 12, 13, 6]])

    >>> np.insert(a,1,[[11,12,13],[14,15,16],[17,18,19]],axis = 1)

    array([[ 1, 11, 14, 17, 2],

    [ 3, 12, 15, 18, 4],

    [ 5, 13, 16, 19, 6]])

    4)

    math?formula=%5Ccolor%7Bred%7D%7Bnumpy.delete%7D 返回从输入数组中删除指定子数组的新数组。 与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开。

    Numpy.delete(arr, obj, axis)

    arr:输入数组

    obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组

    axis:沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开

    未传递 Axis 参数,生成一个一维数组

    >>> import numpy as np

    >>> a = np.arange(12).reshape(3,4)

    >>> a

    array([[ 0, 1, 2, 3],

    [ 4, 5, 6, 7],

    [ 8, 9, 10, 11]])

    >>> np.delete(a,5)

    array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])

    定义axis=0,对行进行操作

    >>> import numpy as np

    >>> a = np.arange(12).reshape(3,4)

    >>> np.delete(a,5)

    array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])

    >>> a

    array([[ 0, 1, 2, 3],

    [ 4, 5, 6, 7],

    [ 8, 9, 10, 11]])

    ''' 删除第2行 '''

    >>> np.delete(a,1,axis = 0)

    array([[ 0, 1, 2, 3],

    [ 8, 9, 10, 11]])

    '''删除第2行和第3行'''

    >>> np.delete(a,[1,2],axis = 0)

    array([[0, 1, 2, 3]])

    定义axis=1,对列进行操作

    >>> import numpy as np

    >>> a = np.arange(12).reshape(3,4)

    >>> np.delete(a,5)

    array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])

    >>> a

    array([[ 0, 1, 2, 3],

    [ 4, 5, 6, 7],

    [ 8, 9, 10, 11]])

    ''' 删除第2列 '''

    >>> np.delete(a,1,axis = 1)

    array([[ 0, 2, 3],

    [ 4, 6, 7],

    [ 8, 10, 11]])

    ''' 删除第2列和第3列 '''

    >>> np.delete(a,[1,2],axis = 1)

    array([[ 0, 3],

    [ 4, 7],

    [ 8, 11]])

    切片操作 必须使用 numpy.s_

    >>> import numpy as np

    >>> a = np.arange(12).reshape(3,4)

    >>> a

    array([[ 0, 1, 2, 3],

    [ 4, 5, 6, 7],

    [ 8, 9, 10, 11]])

    >>> np.delete(a, np.s_[1:3])

    array([ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11])

    ''' 删除第2行和第3行 '''

    >>> np.delete(a, np.s_[1:3],axis=0)

    array([[0, 1, 2, 3]])

    ''' 删除第2列和第3列 '''

    >>> np.delete(a, np.s_[1:3],axis=1)

    array([[ 0, 3],

    [ 4, 7],

    [ 8, 11]])

    ''' 步长为2 进行删除,删除 index 为 0, 2, 4 ....的元素 '''

    >>> np.delete(a, np.s_[::2])

    array([ 1, 3, 5, 7, 9, 11])

    >>> np.delete(a, np.s_[::2],axis=0)

    array([[4, 5, 6, 7]])

    >>> np.delete(a, np.s_[::2],axis=1)

    array([[ 1, 3],

    [ 5, 7],

    [ 9, 11]])

    5)

    math?formula=%5Ccolor%7Bred%7D%7Bnumpy.unique%7D 用于去除数组中的重复元素

    numpy.unique(arr, return_index, return_inverse, return_counts)

    arr:输入数组,如果不是一维数组则会展开

    return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储

    return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储

    return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数

    >>> import numpy as np

    >>> a = np.array([5,2,6,2,7,5,6,8,2,9])

    >>> a

    array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

    >>> np.unique(a)

    array([2, 5, 6, 7, 8, 9])

    return_index = True

    >>> import numpy as np

    >>> a = np.array([5,2,6,2,7,5,6,8,2,9])

    >>> a

    array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

    >>> np.unique(a, return_index = True)

    (array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 4, 7, 9]))

    return_inverse = True

    >>> import numpy as np

    >>> a = np.array([5,2,6,2,7,5,6,8,2,9])

    >>> a

    array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

    >>> np.unique(a,return_inverse = True)

    (array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 0, 3, 1, 2, 4, 0, 5]))

    return_counts = True

    >>> import numpy as np

    >>> a = np.array([5,2,6,2,7,5,6,8,2,9])

    >>> a

    array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

    >>> np.unique(a,return_counts = True)

    (array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1]))

    展开全文
  • 1.使用in关键字。 该方法可以判断对象的自有属性和继承来的属性是否存在。 var o={x:1}; "x" in o; //true,自有属性存在 "y" in o; //false "toString" in o;...该方法只能判断自有属性是否存在,对...
  • 当在循环数组中,删掉某个元素的时候,不要使用splice方法。 因为splice会使原数组发生变化,而此时数组还处在循环中,所以会出现问题。 例子: 有个数组formData,需求:删除formData的itemList中,queId === ...
  • 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),...
  • LeetCode 1186. 删除一次得到子数组最大和(DP)

    千次阅读 多人点赞 2020-06-03 22:26:20
    给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),...
  • 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),...
  • 给你一个整数数组,返回它的某个非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),...
  • 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),...
  • 1、在数组中一次同时删掉两个不同的元素,如果存在某个数出现次数大于数组长度的一半,那么即使每次都删,最后也会至少剩下 1 个(不可能存在两个候选人,因为不可能存在两个数都超过一半); 2、第一个数字作为第一...
  • hdu 2852 KiKi's K-Number (树状数组)

    千次阅读 2013-08-26 12:21:55
    题意:给定一个容器,里面存放各种数值,规定三个操作,一个是在容器中增加一个数值,一个是在...此题因为是增加和删除元素的值,所以比较容易往树状数组的方向想,用树状数组当容器。采用一个标记数组来标记某个数值
  • HDU 3333 Turing Tree 线段树 or 树状数组

    千次阅读 2012-03-22 20:15:02
    给出一组序列,问某个区间内序列的和,跟普通求和不同的是,要求值相同的元素只能算一次。 首先看数据范围,就知道要离散化,不然没法标记某个数是否出现过。 然后要对要查询的区间进行排序,按右端点进行排序。 ...
  • 给定一组整形数,使用vector容器存储,现在要求删掉其中值大于某个值的元素。 即:初始数组为{8,6,4,2},要求删除其中大于5的元素。 这里使用网上给出的一些方法(错的),主要参考这里...
  • 图解回溯算法

    2020-08-14 21:30:27
    在传值时,对于排列问题,是要删掉单个用过的元素;组合问题,是删掉前面所有的元素数组、字符串,给定一个特定的规则,尝试搜索迭代找到某个解。 二维数组下的DFS搜索(八皇后、黄金矿工、数独)
  • 请你再删掉某个元素后得到的结果数组中,返回最长的且只包含1的非空子数组的长度。如果不存在这样的子数组,请返回0。 示例 输入:nums = [1,1,0,1] 输出:3 删掉索引为2的数字0后,[1,1,1]包含3个1。 解题...
  • 小黄笔记之List集合

    2020-07-21 09:37:19
    add()添加数据 remove()移除某个位置的元素并返回被删掉的元素 add(index,elem)将elem添加到index位,如果index不符合要求会报出数组下标越界异常。 set()替换掉某个元素并返回被替换的元素。
  • [LeetCode]Majority Element

    2015-10-19 21:10:43
    题目:找出一个数组中大部分的数(某个数出现的次数超过⌊ n/2 ⌋... 方法二:Moore‘s voting 算法:每次都找出一对不同的元素,从数组删掉,直到数组为空或只有一种元素。 c++参考代码: 方法一: class Solution
  • 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 解题思路 暴力解决 根据题目...
  • 回溯算法就是使用递归。 使用回溯法的明显标志 排列、组合(子集、幂集、字符全排列)...数组、字符串,给定一个特定的规则,尝试搜索迭代找到某个解。 二维数组下的DFS搜索(八皇后、黄金矿工、数独) 解题思路 ...
  • 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] ...
  • JS快速入门

    2018-08-01 13:14:00
    字符串 模板字符串 需要特别注意的是,字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果: ...shift()方法则把Array的第一个元素删掉: push()向Array的末尾添加...
  • excel的使用

    2012-11-25 17:06:01
    这时再删掉B、C、D列的数据。下面是一个“&”实际应用的例子。用AutoCAD绘图时,有人喜欢在EXCEL中存储坐标点,在绘制曲线时调用这些参数。存放数据格式为“x,y”的形式,首先在Excel中输入坐标值,将x坐标值放入A...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

数组删掉某个元素