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:\n" + alist);
System.out.println("blist:\n" + blist);
System.out.println(); System.out.println("change alist----------------");
alist.set(1, 888);
System.out.println("alist:\n" + alist);
System.out.println("blist:\n" + blist);
System.out.println(); System.out.println("change blist----------------");
blist.set(1, 1024);
System.out.println("alist:\n" + alist);
System.out.println("blist:\n" + 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中任何一个,

都会对另外一个有影响.

List Slice in Python(Compared with Java)的更多相关文章

  1. python面向对象进阶 反射 单例模式 以及python实现类似java接口功能

    本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...

  2. paip.性能跟踪profile原理与架构与本质-- python扫带java php

    paip.性能跟踪profile原理与架构与本质-- python扫带java php ##背景 弄个个输入法音标转换atiEnPH工具,老是python性能不的上K,7k记录浏览过k要30分钟了. ...

  3. python 自动发现Java端口

    python 自动发现Java端口 #!/usr/bin/env python #encoding: utf8 import subprocess try: import json except Im ...

  4. JPype:实现在python中调用JAVA

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  5. PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。

    PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...

  6. py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe. : java.lang.IllegalArgumentException: Unsupported class file major version 55

    今天小编用Python编写Spark程序报了如下异常: py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apach ...

  7. 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

    2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...

  8. 遍历文件路径python版,java版

    python: # 获取所有txt路径列表 file_list = [] def gci(filepath): files=os.listdir(filepath) for fi in files: ...

  9. Ubuntu1404安装eclipse(目的是为了运行python,当然java更可以)

    原创文章,不得转载 我是彩印网(www.caiyin.com) 的技术开发人员,在这里首先请允许我做下业务的介绍 彩印网是由北京出彩电子商务有限公司运营的专业印刷电商,集线上购物.支付.设计.制作.配 ...

随机推荐

  1. active mq 配置

    <transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame s ...

  2. IOS设计模式的六大设计原则之迪米特法则(LOD,Law Of Demeter)

    定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要调用 ...

  3. linux下使用Stunnel配置与使用方式一例

    第一部分:stunnel的安装与配置 注:在ubuntu下,stunnel的安装很简单快捷. 在synaptic(安立得工具系统下可以直接选举安装) 在服务器环境下,直接使用apt-get insta ...

  4. 自动添加需要编译的源文件Android.mk模板

    自动添加需要编译的源文件列表 添加第三方静态库.动态库的依赖   假设我们的项目依赖 libmath.a, libjson.a, libffmpeg.so 这几个第三方库文件,项目包含如下几个模块:a ...

  5. jxta 2.8x启动了

    http://chaupal.github.io/ ———————————————————————————————————————————————————————————————————— 至少两个月 ...

  6. Tensorflow如何选择GPU

    CUDA_VISIBLE_DEVICES=1 python run.py or import os os.environ["CUDA_VISIBLE_DEVICES"]=" ...

  7. HTTPS请求 SSL证书验证

    import urllib2 url = "https://www.12306.cn/mormhweb/" headers = {"User-Agent": & ...

  8. scrapy初体验 - 安装遇到的坑及第一个范例

    scrapy,python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.scrapy用途广泛,可以用于数据挖掘.监测和自动化测试.scrapy的安装稍 ...

  9. HDU3062-Party(2-SAT)

    pid=3062">题目链接 思路:2-SAT的模版题 代码: #include <iostream> #include <cstdio> #include & ...

  10. 粗略。。。java设计模式总结。。。studying

    设计模式5--DAO(data access object) 1)把本机内存数据保存到指定目录中 2)把本机指定目录中数据读取到内存中 设计模式4--装饰模式 1)加强某个类的功能,并把该类加到加强类 ...