zoukankan      html  css  js  c++  java
  • python学习之核心数据类型

    python核心数据类型

      对象类型        例子

      数字          1234,-345

      字符串         'spam'

      列表          [1,3,'ds']

      元组          (1,'spam',6)

      字典          {'name':'lili','age':12}

      文件          myfile =open('test.text',''w)

      集合          set('abc')

      其他类型        None 布尔型

      编程单元类型      函数,模块,类

    数字

      加,减,乘,除,就不用说了,+ - * /

      ** 表示乘方  2**3  表示  2的三次方 结果是8

      >>>2**100   

      1267650600228229401496703205376L

      会发现,即使是一个很大的数,python也可以正确输出,可能结果是用字符串保存的,

      除了表达式外,和python 一起分发的还有一些常用的数学模块,模块只不过是我们导入以供使用的额外工具包
      import math
      >>>math.pi


      import random
      >>>random.random();
    字符串
      在python中我们还可以反向索引,从最后一个开始
      s = "dhsaj"
      >>>s[-1]
      j
      >>>s[-2]
      a
      除了简单的位置索引外,序列也支持一种所谓的分片操作这是一种一步就能够实现整个分片的方法
      s = "spam"
      >>>s[1:3]
      pa
      >>>s[1:]   从序号1开始之后的所有序列
      pam
      >>>s
      spam
      >>>s[0:3]
      spa
      >>>s[:3]   从头开始到序号为3的之前的序列
      spa
      >>>s[:-1]  从头开始到最后一个之前的序列
      spa
      >>>s[:]    从头开始到最后的序列
      spam

      字符串也支持用加好进行合并
      s = "spam"+"name"
      >>>s
      spamname
      >>>s*2       重复两次        
      spamnamespamname

      不可变性
      python字符串在创建之后就不能改变
      s = "spam"
      >>>s[0] = 'z'
      出错
      s = 'z'+s[1:];
      >>>s
      zpam

      类型特定的方法
      find 可以进行字符串的查找
      replace 将会对全局进行搜索和替换
      s = "spam"
      >>>s.find("pa");
      1
      >>>s.replace("pa","xyz");
      sxyzpam
      >>>s
      spam

      尽管这些字符串方法的命名由改变的含义,但是在这里我们都不会改变原始的字符串,而是会创建一个新的字符串作为结果,因为字符串具有不可变性

      line = "aaa,bbb,ccc,ddd";
      >>>line.split(',');       将字符串拆分城一个字符串列表
      ['aaa','bbb','ccc','ddd']
      s = 'spam'
      >>>s.upper()         改变大小写
      SPAM
      >>>s.isalpha()      测试字符串内容
      True
      line = 'aaa,bbb,ccc ';
      >>>line = line.rstrip()   从右边移除空格字符
      >>>line
      'aaa,bbb,ccc'

      字符串还支持一个叫做格式化的高级替代操作,
      >>> '%s,eggs,and %s' %('spam','SPAM')
      'spam,eggs,and,SPAM'

      >>>'{0},eggs,and{1}'.format('spam','SPAM')
      'spam,eggs,and,SPAM'

    寻求帮助
      上一节的方法具有代表性,但是仅仅是少数的字符串的例子而已,可以调用内置的dir函数,将会返回一个列表,其中包括了对象的所有属性,

      >>>dir(s)
      ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',        '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',   '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count',   'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',     'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

      dir函数只是简单的给出了方法的名称,要查询他们是做什么的,可以传递参数给help函数
      >>>help('sss'.replace)
      Help on built-in function replace:

      replace(...)
          S.replace(old, new[, count]) -> string
        
          Return a copy of string S with all occurrences of substring
          old replaced by new.  If the optional argument count is
          given, only the first count occurrences are replaced.


    列表
      python列表不像c语言那种需要统一的类型,python列表可以存放不同的类型
      因为列表是可变的,大多数列表的方法,都会原地的改变列表对象,而不是创建一个新的列表

      l = [12,"das",34];
      >>>len(l)
      3
      >>>l[0]
      12
      >>>l[:-1]
      12,"das"
      >>>l+[4,5,6]
      [12,"das",34,4,5,6]
      >>>l.append('aa');
      [12,"das",34,'aa']
      >>>l.pop(2)
      [12,'das',aa]
      >>>l.sort()   排序
      >>>l.reverse();  翻转
      列表虽然是没有固定的大小,但是仍然使不能访问超出表尾的数据
      ------------------------------------------------------------
      嵌套
      python 可以支持任意的嵌套形式
      就是在一个列表中可以嵌套另一个列表甚至是一个元祖
      ---------------------------------------------------------------
      列表解析

      m=[    [1,2,3],
            [4,5,6],
            [7,8,9]
        ];
      >>>cols = [row[1] for row in m];   // 从m中取出第二列 row 对应m中每个列表元素
      >>>cols
      [2,5,8]
      >>> cols  = [row[1] for row in m if row[1]%2 == 0]  也支持判断语句
      [2,8]
      >>> double = [c*2 for c in "spam"];
      >>>double
      ['ss','pp','aa','mm'];

    字典

      字典不是序列,而是一种映射,是通过键而不是相对位置来存储的,只是简单的将键映射到值

      >>>d = {'food':'spam','color':4}
      >>>d['food']
      'spam'
      >>>d = {'name':{'last':smith,'first':'bob'},
            'age':23,
            'job':'aa'}
      >>>d['name']
      {'last':smith,'first':'bob'},
      >>>d['name']['first']
      'bob'
      >>>d = {'a':1,'c':2,'b':3}
      >>> li = list(d.keys())
      >>>li
      ['a','c','b']
      >>> li.sort();
      >>> li
      ['a','b','c'];

    元组
      基本上就是一个不可改变的列表

      >>> t = (1,2,3,4)
      >>>len(t)
      4
      >>>t + (5,6);
      (1,2,3,4,5,6)
      在3.0中由两个专有的方法
      t.index(4)
      3
      t.count(3)
      1
      同样支持混合的类型和嵌套,但是不能增长或是缩短,

    文件
      创建一个文件对象,需要调用内置的函数,和一个操作模式,

      >>>f = open ('file1.txt','w')
      >>>f.wirte('hello ')
      >>>f.write('world ')
      >>>f.close();


      >>>f = open('file1.txt','r')     r  rb
      >>>str = f.read()
      >>>f.close()
      >>>str
      >>

      ----------------------------------
      >>> l = [1,2,3,4]
      >>>type(l)
      <type list>
      >>> type(type(l))
      <type type>
      以下三种都是用来判断类型的
      if(type(l) == type([])){
      }
      if(type(l) == list){
      }
      if(isinstance(l,list)){
      }
    ----------------------------------------------------------------------------
    用户自定义的类

      class student:
          def  __init__(self,name):
              self.name = name;
          def  getName(self):
              return self.name;
          def setName(self,name):
              self.name = name;

      stu1 = student('lil');
      name = stu1.getName();
      print(name);

      stu1.setName('aaa');
      name = stu1.getName();
      print(name);


  • 相关阅读:
    eureka_feign学习_1
    九度 题目1183:守形数----------------我用的方法自创
    题目1179:阶乘-------------阶乘不用long long int 就不能AC
    题目1177:查找---------------字符串的函数问题
    题目1170:找最小数-------------------------------找最小值,中间值应该初始化为最大值
    题目1169:比较奇偶数个数-----------------------------这个世界不是奇数就是偶数l
    题目1075:斐波那契数列
    题目1070:今年的第几天?---------关键是闰年的判断
    题目1068:球的半径和体积----------------------------arccos(-1)要用c语言中的acos(-1)代替
    题目1067:n的阶乘--------long long int
  • 原文地址:https://www.cnblogs.com/techdreaming/p/5068372.html
Copyright © 2011-2022 走看看