• List Slice in Python(Compared with Java)


    Python:  

      在Python中, 对于list, 切片会返回一个新的list, 而不会改变原有的list. 注意这儿说的"不会改变原有的list"指的是下面的这种情况: 

    a = [10, 20, 30]
    b = a[1:3]
    print('a is {0}'.format(a))
    print('b is {0}'.format(b))
    
    print('Change b---------------')
    b[0] = 8
    print('a is {0}'.format(a))
    print('b is {0}'.format(b))
    
    print('Change a---------------')
    a[1] = 1024
    print('a is {0}'.format(a))
    print('b is {0}'.format(b))

      Output:

    a is [10, 20, 30]
    b is [20, 30]
    Change b---------------
    a is [10, 20, 30]
    b is [8, 30]
    Change a---------------
    a is [10, 1024, 30]
    b is [8, 30]

      从上面的代码以及输出结果中, 我们可以看出, 执行完"b = a[1:3]"后, 更改a或b中任何一个都不会对另外一个有影响.

      请注意上面说的这种情况与下面这种情况的区别:

    def change(x):
      x[1:3] = ['a', 'b']
    
    a = [10, 20, 30]
    print('a is {0}'.format(a))
    change(a)
    print('a is {0}'.format(a))

      Output:

    a is [10, 20, 30]
    a is [10, 'a', 'b']

    Java:

      现在让我们来看看Java中的'切片'操作(这里指的是List接口中的subList()方法)与Python中的切片操作的区别:  (此处把

    Java的subList()搬出来, 仅仅是为了对比一下,让大家更好的理解Python中的list切片"不会改变原有的list"这句话)

    public static void main(String[] args){
            List<Integer> alist = new ArrayList<Integer>();
            for (int i = 0; i < 10; ++i){
                alist.add(i);
            }
            List<Integer> blist = alist.subList(1, 5);
            System.out.println("alist:
    " + alist);
            System.out.println("blist:
    " + blist);
            System.out.println();
    
            System.out.println("change alist----------------");
            alist.set(1, 888);
            System.out.println("alist:
    " + alist);
            System.out.println("blist:
    " + blist);
            System.out.println();
    
            System.out.println("change blist----------------");
            blist.set(1, 1024);
            System.out.println("alist:
    " + alist);
            System.out.println("blist:
    " + blist);
        }

      Output:

    alist:
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    blist:
    [1, 2, 3, 4]
    
    change alist----------------
    alist:
    [0, 888, 2, 3, 4, 5, 6, 7, 8, 9]
    blist:
    [888, 2, 3, 4]
    
    change blist----------------
    alist:
    [0, 888, 1024, 3, 4, 5, 6, 7, 8, 9]
    blist:
    [888, 1024, 3, 4]

      从上面的代码以及输出结果中, 我们可以看出, 执行完"List<Integer> blist = alist.subList(1, 5);"后, 更改alist或blist中任何一个,

    都会对另外一个有影响.

  • 相关阅读:
    ElasticSearch记录(1)底层原理
    hbase学习记录(4)hbase和Hadoop整合(实现wrodcount程序)
    flume记录(2)监控文件和目录,对hdfs操作
    flume记录(1)使用
    hbase学习记录(3)JAVA_API操作hbase
    hbase学习记录(2)shell常用命令
    hbase学习记录(1)简介
    ssh三大框架整合
    spring事务管理
    Ubuntu 18.04版本设置root账户
  • 原文地址:https://www.cnblogs.com/lxw0109/p/slice_in_Java_Python.html
Copyright © 2020-2023  润新知