• 通过比较学python(3):字典类,字符串 朱燚:


     

    Dictionary
    创建一个Dictionary
    ab={"key1":"a","key2":"b","key3":"c"},这个语句创建一个dictionary并为他添加三个字典项,注意这里的key只能是一个不变类,也就是说是一个创建了就不能改变内容的值,比如你使用一个list对象作为键,就会报错

    添加或者修改一个字典项
    ab["key4"]="d"

    字典对象拷贝
    ab.copy()
    注意这个函数进行是进行深拷贝还是潜拷贝呢?也就是传递应用还是传递值呢?
    我们可以作个试验
    >>> dict={1:'a',2:'b'}
    >>> dict2=dict.copy()
    >>> dict2
    {1: 'a', 2: 'b'}
    >>> dict
    {1: 'a', 2: 'b'}
    >>> dict[2]='c'
    >>> dict
    {1: 'a', 2: 'c'}
    >>> dict2
    {1: 'a', 2: 'b'}
    可以看出进行的深拷贝,这和.net的拷贝是不同的,.net的拷贝默认是传递值

    Sequence接口

    Sequence 是上面这些集合(list,tuple,dictionary)类的接口,定义了索引器和slice的功能.对于索引器.net程序员很熟悉比如在 list和tuple中我们可以通过list[index]的方法来访问列表中的值,这个非常类似于.net中的索引器,slice是指返回一个列表的一部分
    比如
    >>> a=[1,2,3,4,5]
    >>> a[1:3]
    [2, 3]
    通过a[1:3]我们返回了a列表中从第二个元素到第四个元素的子列表,那么如果我们要返回一个列表的所有数据怎么办呢?通过a[:]我们可以返回a的所有数据,注意,这其实也是一个深拷贝,而非引用拷贝
    dict1=dict2[:]

    python本身没有提供接口这个东东,但是从.Net和Java程序员看来,也许把Sequence表示成接口要容易理解一些,而且从代码实现来说,python的.net版本中列表对象就是从一个叫做ISequence的接口继承的

    public class Tuple : ISequence, ICollection, IEnumerable, IEnumerable<object>, IValueEquality, IList<object>, ICodeFormattable, IParameterSequence 

    ISequence的定义了索引和slice的方法

    有关python接口的资源可以参看

    http://blog.csdn.net/pjeby/archive/2007/03/18/1532666.aspx

    字符串类
    初始化字符串的方法

    str="my name is zy"
    也可以用单引号
    str='my name is zy'
    也可以用三引号
    str='''发送到发送到发送到非'''

    其他方法大家可以通过help(string)来看到,我就不重复介绍了
    这里介绍几个特殊的用法
    string.startswith(str):字符串是否以某个字符串开头,是则返回真
    string.find(str):在字符串中查找某个字符串,找到返回真
    if 'str' in name:这是上面查找语句的另外一种写法
    字符串连接,类似.net中string类的join方法,python字符串也可以把一个数组中的字符串连接起来形成一个长字符串,但是注意这里的分隔符,.net中我们用string的静态方法,string.join(string separator,string[] list),前一个参数设置连接后的分隔符,后一个设置待连接的数组,但是由于python不存在静态方法,所以他稍微有些不同,大家看看下面语句:
    delimiter = '_*_'
    mylist = ['Brazil', 'Russia', 'India', 'China']
    print delimiter.join(mylist)

    连接符变成了句子的主语,大家注意到了吗?

  • 相关阅读:
    用Intellij idea创建Maven项目JDK8源码阅读环境问题整理
    咱的Maven项目能用Junit5吗?
    43- 8 mvc知识点
    42-7 linq
    (Ant编程) Iqueryable 类型介绍
    Iqueryable 类型中 的 使用lambda 注意的坑。 (linq to sql)
    (Ant编程) Linq 的select 方法
    Scala模式匹配
    scala正则表达式
    P4336 [SHOI2016]黑暗前的幻想乡
  • 原文地址:https://www.cnblogs.com/yizhu2000/p/802270.html
Copyright © 2020-2023  润新知