一、可变与不可变

可变:值改变,但是id不变,证明就是在改变原值,是可变类型。它的原理是在内存里有一个值,然后这个值发生了改变,意为id地址是同一个,没有变化

  1. l=['a','b']
  2. print(id(l)) # 结果为 34743240
  3. l[0]='A'
  4. print(l) # 结果为 ['A','b']
  5. print(id(l)) # 结果为 34743240

不可变:值改变,但是id也跟着变,证明是产生了新的值,是不可变类型。它的原理是在内存里有一个值,然后又申请了另一个地址,则id地址不同。称为不可变类型。

  1. x = 9
  2. print(id(x)) # 结果为 1580166880
  3.  
  4. x = 10
  5. print(id(x)) # 结果为 1580166912

二、数字类型

  1. 、整形
  2.   基本使用
  3.   用途:记录数字,年纪,手机号
  4.   定义方式
  5.     age =
  6.     age = int()
  7.     print(age,type(age))
  1. 数据类型转换: 只能将纯数字的字符串转成int
  2.  
  3. a = int('')
  4. print(a,type(a))
  5.  
  6. a = int('')
  7. print(a,type(a ))
  1. 总结:
  2.   存一个值
  3.   不可变(值变,id就变。)
  4.   x = 9
  5.   print(id(x)) # 结果为 1580166880
  6.   x = 10
  7.   print(id(x)) # 结果为 1580166912

三、字符串

  1. 基本使用
  2. 用途:记录描述性质的状态
  3.  
  4. 定义方式:用单引号,双引号,三引号中包含一系列字符
  5.  
  6. l = 'abcde'
  7. l = str(l)
  8. print(l,type(l )) # 结果为 abcde <class 'str'>
  9.  
  10. name = 'hello'
  11. name = str(name)
  12. print(name,type(name)) # 结果为 hello <class 'str'>
  13. 数据类型转换:所有类型都可以被str转成字符串类型
  14.  
  15. res=str([1,2,3])
  16. print(res,type(res)) # 结果为 [1, 2, 3] <class 'str'>
  17.  
  18. l = [1,2,3,4,5,6]
  19. l = str([1,2,3,4,5,6])
  20. print(l,type(l)) # 结果为 [1, 2, 3, 4, 5, 6] <class 'str'>
  21.  
  22. 常用操作+内置的方法
  23.  
  24. 1、按索引取值(正向取+反向取) :只能取
  25. name = 'helloworld'
  26. print(name[0],name[1],name[2],name[3],name[4],type(name ))
  27. # 结果为 h e l l o <class 'str'>
  28.  
  29. print(name[-1],name[-2],name[-3],name[-4],name[-5],type(name ))
  30. # 结果为 d l r o w <class 'str'>
  31.  
  32. print(name[0])
  33. print(name[1])
  34. print(name[2])
  35. print(name[3])
  36.  
  37.  
  38. 2、切片(顾头不顾尾,步长)
  39. name = 'helloworld'
  40. mag = name[0:10] # 取 0 1 2 3 4 5 6 7
  41. print(mag) # 结果为 helloworld
  42.  
  43. mag = name[::]
  44. print(mag) # 结果为 helloworld
  45.  
  46. name = 'helloworld'
  47. mag = name[-1:-11:-1] # 取 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
  48. print(mag) # 结果为 dlrowolleh
  49.  
  50. mag = name[-1::-1]
  51. print(mag) # 结果为 dlrowolleh
  52.  
  53. mag = name[::-1]
  54. print(mag) # 结果为 dlrowolleh
  55.  
  56. 3、长度len
  57. name = 'helloworld'
  58. print(len(name)) # 结果为10个字符
  59.  
  60. 4、成员运算innot in:判断一个子字符串是否存在于大字符串中
  61.  
  62. name = 'helloworld'
  63. print('i'in name) # 结果为 False
  64. print('hell'in name) # 结果为 True
  65.  
  66. 5、移除空白strip: 用来去除字符串左右两边的字符,不指定默认去除的是空格
  67. name = input('your username:>>>').strip()
  68. password = input('your passworld:>>>').strip()
  69. if name == 'helloworld'and password =='':
  70. print('login successful')
  71.  
  72. else:
  73. print('error')
  74.  
  75. name = ' helloworld'
  76. name = name.strip()
  77. print(name) # 结果为helloworld 前面没有空格
  78.  
  79. name = '&*helloworld'
  80. name = name.strip('&*@#$%')
  81. print(name) # 结果为helloworld
  82.  
  83. name = '&*hello####world&*'
  84. name = name.strip('#&*@#$%')
  85. print(name) # 结果为hello####world
  86. 注意 helloworld左边和右边的字符会消失,但是中间的字符还存在。
  87.  
  88. name = name.strip('&*@#$%')
  89. print(name)
  90. print('&*helloworld@#$%'.strip('&*@#$%')) # 结果为helloworld
  91.  
  92. 6、切分split:针对有规律的字符串,按照某种分隔符切成列表
  93. name = 'jerry:25:male'
  94. name = name.split(':')
  95. print(name) # 结果为 ['jerry', '25', 'male']
  96.  
  97. name = 'jerry:25:male'
  98. name = name.split(':',1)
  99. print(name) # 结果为 ['jerry', '25:male']
  100.  
  101. 7join用法。用:号作连接符号将纯字符串的列表拼接成一个字符串
  102. name = ['jerry','','male']
  103. name = name[0]+':'+name[1]+':'+name[2]
  104. print(name) # 结果为 jerry:25:male
  105.  
  106. name = ['jerry','','male']
  107. name = ':'.join(name)
  108. print(name) # 结果为 jerry:25:male
  109.  
  110. 8、循环
  111. for name in 'hello':
  112. print(name)
  113. # 结果为
  114. h
  115. e
  116. l
  117. l
  118. o
  119.  
  120. 1strip,lstrip,rstrip
  121. 移除空格strip:移除字符串左右两边的字符
  122. lstrip:移除字符串左边的字符
  123. rstrip:移除字符串右边的字符
  124. print('******tom***********'.strip('*')) # 结果为 tom
  125. print('******tom***********'.lstrip('*')) # 结果为 tom***********
  126. print('******tom***********'.rstrip('*')) # 结果为 ******tom
  127.  
  128. 2lower,upper
  129. lower:大写字母变小写
  130. upper:小写字母变大写
  131. print('TOM123'.lower())            # 结果为 tom123
  132. print('tom123'.upper())            # 结果为 TOM123
  133.  
  134. name = 'TOM'
  135. print(name.lower())
  136. name = 'tom'
  137. print(name.upper())
  138. 3startswith,endswith
  139. name ='tom is me'
  140. print(name.startswith('t'))         # 结果为 True 首字母
  141. print(name.endswith('e'))         # 结果为 True 尾字母
  142. print(name.endswith('is'))      # 结果为 False

  143. 4format的三种玩。格式化输出。和%s类似。但format可以任意位置的
  144. name ='my name is %s my age is %s' %('tom',25)
  145. print(name) # 结果为 my name is tom my age is 25
  146.  
  147. # 方法一
  148. tag = 'my name is {name} my age is {age}'.format(name = 'tom',age =25 )
  149. print(tag) # 结果为 my name is tom my age is 25
  150.  
  151. 了解
  152. # 方法二
  153. tag ='my name is {0} my age is {1}'.format('tom',25)
  154. print(tag) # 结果为 my name is tom my age is 25
  155. # 方法三
  156. tag='my name is {0}{1} my age is {1}{1}{1}{1}'.format('tom',25)
  157. print(tag) # 结果为 my name is tom25 my age is 25252525
  158.  
  159. 5split,rsplit
  160. split:切分(从左往右)
  161. rsplit:切分(从右往左)
  162.  
  163. msg='a:b:c:d'
  164. print(msg.split(':',1)) # 结果为 ['a', 'b:c:d']
  165. print(msg.rsplit(':',1)) # 结果为 ['a:b:c', 'd']
  166. name = 'jerry:tommy:judy:una'
  167. print(name.split(':',1)) # 结果为 ['jerry', 'tommy:judy:una']
  168. print(name.rsplit(':',1)) # 结果为 ['jerry:tommy:judy', 'una']
  169.  
  170. 6replace:替换
  171. name = 'jerry say :my name is jerry,a college student'
  172. print(name.replace('jerry','man',1)) # 结果为 man say :my name is jerry,a college student

  173. 7isdigit:如果字符串是由纯数字组成的,则返回True
  174. print(''.isdigit()) Ture
  175. print('123123 '.isdigit()) False
  176. print('123123asdf'.isdigit()) False
  177. print('12312.3'.isdigit()) False
  178. 字符串类型总结:
  179.       存一个值
  180.       有序
  181.       不可变(值改变,但是id也跟着变,证明是产生了新的值,是不可变类

四、列表

  1. 按照位置记录多个任意类型的值。并且可以取出指定位置的值。
  2. 通过索引对应值,从0开始,代表的是位置。
  3. 定义:在中括号内用逗号隔开任意类型的值
  4. name = ['jerry', 25, 175.5, [120, 5000]]
  5.  
  6. 数据类型转换:但凡能够被for循环的数据类型都可以传给list,被其转换成列表
  7. name = list('hello')
  8. print(name) # 结果为 ['h', 'e', 'l', 'l', 'o']
  9.  
  10. name = ['jerry', 25, 175.5, [120, 5000]]
  11. name = list(name)
  12. print(name) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
  13.  
  14. res = list({'a': 1, 'b': 2, 'c': 3})
  15. print(res) # 结果为 ['a', 'b', 'c']
  16.  
  17. 常用操作 + 内置方法
  18. 1、按索引存取值(正向存取+反向存取):即可存也可以取
  19. name = ['jerry', 25, 175.5, [120, 5000]]
  20. print(name[0], name[1], name[2], name[3]) # 结果为 jerry 25 175.5 [120, 5000]
  21. print(name[-1], name[-2], name[-3], name[-4]) # 结果为 [120, 5000] 175.5 25 jerry
  22.  
  23. # 注意注意注意:对于不存在的索引会报错
  24.  
  25. 可存:
  26. dic = {"k1":111}
  27. dic['k2'] = 2222
  28. print(dic) # 结果为 {'k1': 111, 'k2': 2222}
  29.  
  30. 2、切片(顾头不顾尾,步长)
  31. name = ['jerry', 25, 175.5, [120, 5000]]
  32. print(name[0:4:1]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
  33. print(name[::1]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
  34. print(name[0::1]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
  35. print(name[-1::-1]) # 结果为 [[120, 5000], 175.5, 25, 'jerry']
  36. print(name[::-1]) # 结果为 [[120, 5000], 175.5, 25, 'jerry']
  37. print(name[:]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
  38. print(name[::]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
  39.  
  40. 3、长度len
  41. name = ['jerry', 25, 175.5, [120, 5000]]
  42. print(len(name)) # 结果为4
  43.  
  44. 4、成员运算innot in
  45. name = ['jerry', 25, 175.5, [120, 5000]]
  46. print('jerry' in name) # 结果为True
  47. print('tommy' not in name) # 结果为True
  48.  
  49. 5、追加append和插入insert
  50. ①追加append:只能往后追加
  51. name = ['jerry', 25, 175.5, [120, 5000]]
  52. name.append('abc')
  53. print(name) # 结果为 ['jerry', 25, 175.5, [120, 5000], 'abc']
  54.  
  55. name = ['jerry', 'tommy', 'judy']
  56. name.append('una')
  57. print(name) # 结果为 ['jerry', 'tommy', 'judy', 'una']
  58.  
  59. ②插入insert:在指定位置插入
  60. name = ['jerry', 25, 175.5, [120, 5000]]
  61. name.insert(0, '')
  62. print(name) # 结果为 ['100000', 'jerry', 25, 175.5, [120, 5000]]
  63.  
  64. name = ['jerry', 25, 175.5, [120, 5000]]
  65. name.insert(1, '')
  66. print(name) # 结果为 [ 'jerry','10000', 25, 175.5, [120, 5000]]
  67.  
  68. name = ['jerry', 25, 175.5, [120, 5000]]
  69. name.insert(4, '')
  70. print(name) # 结果为 ['jerry', 25, 175.5, [120, 5000], '100000']
  71.  
  72. 6、删除
  73. del:不是列表独有的删除,是通用的删除。del没有返回值,只是单纯的删除。
  74. name = ['jerry', 25, 175.5, [120, 5000]]
  75. del name[0]
  76. print(name) # 结果为 [25, 175.5, [120, 5000]]
  77.  
  78. remove:指定要删除的那个元素。和del一样没有返回值,都只是单纯的删除
  79. name = ['a', 'bbb', 'c', 'd', 'e']
  80. name.remove('bbb')
  81. print(name) # 结果为 ['a', 'c', 'd', 'e']
  82.  
  83. pop:(指定要删除的那个元素的索引)。有返回值,返回刚刚删掉的那个元素。 意为取走
  84. name = ['a', 'bbb', 'c', 'd', 'e']
  85. name.pop()
  86. print(name) # 结果为 ['a', 'bbb', 'c', 'd'] # 不指定位置,默认删除最后一个
  87.  
  88. name = ['a', 'bbb', 'c', 'd', 'e']
  89. name.pop(0)
  90. print(name) # 结果为 ['bbb', 'c', 'd', 'e']
  91.  
  92. 7、循环
  93. name = ['jerry', 25, 175.5, [120, 5000]]
  94. for item in name:
  95. print(item)
  96. # 结果为
  97. jerry
  98. 25175.5
  99. [120, 5000]
  100.  
  101. 8clear:清除
  102. name = ['aaa', 'bb', 345]
  103. name.clear()
  104. print(name) # 结果为[]
  105.  
  106. 9extend加多个元素
  107. name = ['aaa', 'bb', 345]
  108. name.extend(['tommy', 120, 175.5])
  109. print(name) # 结果为 ['aaa', 'bb', 345, 'tommy', 120, 175.5]
  110.  
  111. 10、.reverse:反过来
  112. name = ['aaa', 'bb', 345]
  113. name.reverse()
  114. print(name) # 结果为 [345, 'bb', 'aaa']
  115.  
  116. 11sort 排序:只有在类中中所有元素都是同种类型的情况下才能用sort排序(升序)
  117. name = [1, 100, 1000]
  118. name.sort()
  119. print(name) # 结果为 [1, 100, 1000]
  120.  
  121. name = ['z', 'd', 'a']
  122. name.sort()
  123. print(name) # 结果为 ['a', 'd', 'z']
  124.  
  125. 列表类型总结:
  126.       存多个值
  127.       有序
  128.       可变

五、练习

  1. 1、写代码,有如下变量,请按照要求实现每个功能 name = " aleX"
  2.  
  3. 1) 移除 name 变量对应的值两边的空格,并输出处理结果
  4.   name = " aleX"
  5.   print(name.strip())
  6. 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
  7.   name = " aleX"
  8.   print(name.startswith('al'))
  9. 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
  10.   name = " aleX"
  11.   print(name.endswith('X'))
  12. 4) name 变量对应的值中的 l 替换为 p”,并输出结果
  13.   name = " aleX"
  14.   print(name.replace('l', 'p', 3))
  15. 5) name 变量对应的值根据 l 分割,并输出结果。
  16.   name = " aleX"
  17.   print(name.split('l'))
  18. 6) name 变量对应的值变大写,并输出结果
  19.   name = " aleX"
  20.   print(name.upper())
  21. 7) name 变量对应的值变小写,并输出结果
  22.   name = " aleX"
  23.   print(name.lower())
  24. 8) 请输出 name 变量对应的值的第 2 个字符?
  25.   name = " aleX"
  26.   print(name[1])
  27. 9) 请输出 name 变量对应的值的前 3 个字符?
  28.   name = " aleX"
  29.   print(name[:3])
  30. 10) 请输出 name 变量对应的值的后 2 个字符?
  31.   name = " aleX"
  32.   print(name[-2:])
  33. 11) 请输出 name 变量对应的值中 e 所在索引位置?
  34.   name = " aleX"
  35.   print(name.index('e'))
  36. 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo
  37.   name = " aleX"
  38.   print(name[:4:1])

day5 五、数字类型、字符串,列表类型的基本操作和内置方法的更多相关文章

  1. python基础(5)---整型、字符串、列表、元组、字典内置方法和文件操作介绍

    对于python而言,一切事物都是对象,对象是基于类创建的,对象继承了类的属性,方法等特性 1.int 首先,我们来查看下int包含了哪些函数 # python3.x dir(int) # ['__a ...

  2. day09-1 列表,元祖的内置方法

    目录 列表类型的内置方法 作用 定义方式 方法 优先掌握 需要掌握 储存一个值or多个值 有序or无序?(有序:有索引, 无序:无索引) 可变or不可变(可变:值变id不变,不可变:值变id也变) 元 ...

  3. [Python3] 009 字符串:给你们看看我的内置方法 第一弹

    目录 前言 如何查看 python3 中和 str 有关的方法 字符串方法 1. capitalize() 2. casefold() 3. center(width) 4. count(sub[, ...

  4. [Python3] 010 字符串:给你们看看我的内置方法 第二弹

    目录 少废话,上例子 1. isidentifier() 2. islower() 3. isnumeric() 4. isprintable() 5. isspace() 6. istitle() ...

  5. [Python3] 011 字符串:给你们看看我的内置方法 第三弹

    目录 少废话,上例子 1. encode(encoding='utf-8', errors='strict') 2. expandtabs([tabsize=8]) 借此机会简单地说一说 print( ...

  6. day05_08 列表讲解、切片、内置方法

      1.0 查询: a = ['wuchao','jinxing','xiaohu','sanpang','ligang'] print(a[3]) #>>>sanpang prin ...

  7. Python基础部分:9、数据的类型和内置方法

    目录 一.数据类型内置方法理论 1.什么是数据内置方法 2.如何调用数据内置方法 二.整型(int)内置方法与操作 1.类型转换 2.进制数转换 三.浮点型(float)内置方法与操作 1.类型转换 ...

  8. python学习番外篇——字符串的数据类型转换及内置方法

    目录 字符串的数据类型转换及内置方法 类型转换 内置方法 优先掌握的方法 需要掌握的方法 strip, lstrip, rstrip lower, upper, islower, isupper 插入 ...

  9. python基础——4(数字、字符串、列表类型的内置方法介绍)

    目录 一.可变与不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变与不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,id也跟着改变,证明产 ...

随机推荐

  1. MySql之插入操作

    一:插入一行数据 INSERT INTO tableName(列名...) VALUES(对应列名的值); 二:插入多行 INSERT INTO tableName(列名...) VALUES(对应列 ...

  2. Remmina剪切板不正常的问题

    引用:http://forum.ubuntu.org.cn/viewtopic.php?f=73&p=3135388&sid=399b5566833c294045795a4b328fb ...

  3. swift3 单例写法

    import UIKit class SingleOnce { // 单例 static let shared = SingleOnce.init() private init(){} // 其他方法 ...

  4. Redis server went away的解决方案

    Redis server went away出现的问题如下: 1.看redis服务是否启动,包括端口 2.看是否是服务器端的防火墙引起的,iptables和selinux 3.看是否是redis.co ...

  5. 【C语言】字节对齐问题(以32位系统为例)

    1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...

  6. Chrome 调试技巧: 调整网速

    为了方便调试某些内容,比如我想网速设置为 1kb每秒,甚至0kb每秒. 1.打开chrome DevTool ,切换到 "Network".找到最右侧 "Online&q ...

  7. springboot 中打印 sql 语句

    在配置文件中 application.yml 配置如下其一即可 方式一: logging: level: com.xxx.com.dao.mapper: DEBUG //包路径为mapper文件包路径 ...

  8. vertx插件使用vertx-maven-plugin

    http://search.maven.org http://search.maven.org/#artifactdetails%7Cio.fabric8%7Cvertx-maven-plugin%7 ...

  9. fputc和putc和putchar函数的用法

    功 能: 输出一字符到指定流中 putc()与fputc()等价.不同之处为:当putc函数被定义为宏时,它可能多次计算stream的值. 关于fputc(): 原型:int fputc(char c ...

  10. not in 的优化

    //---------------------- 建表1 ---------------------- create table TESTTABLE( id1 VARCHAR2(12), name V ...