day5 五、数字类型、字符串,列表类型的基本操作和内置方法
一、可变与不可变
可变:值改变,但是id不变,证明就是在改变原值,是可变类型。它的原理是在内存里有一个值,然后这个值发生了改变,意为id地址是同一个,没有变化
- l=['a','b']
- print(id(l)) # 结果为 34743240
- l[0]='A'
- print(l) # 结果为 ['A','b']
- print(id(l)) # 结果为 34743240
不可变:值改变,但是id也跟着变,证明是产生了新的值,是不可变类型。它的原理是在内存里有一个值,然后又申请了另一个地址,则id地址不同。称为不可变类型。
- x = 9
- print(id(x)) # 结果为 1580166880
- x = 10
- print(id(x)) # 结果为 1580166912
二、数字类型
- 、整形
- 基本使用
- 用途:记录数字,年纪,手机号
- 定义方式
- age =
- age = int()
- print(age,type(age))
- 数据类型转换: 只能将纯数字的字符串转成int
- a = int('')
- print(a,type(a))
- a = int('')
- print(a,type(a ))
- 总结:
- 存一个值
- 不可变(值变,id就变。)
- x = 9
- print(id(x)) # 结果为 1580166880
- x = 10
- print(id(x)) # 结果为 1580166912
三、字符串
- 基本使用
- 用途:记录描述性质的状态
- 定义方式:用单引号,双引号,三引号中包含一系列字符
- l = 'abcde'
- l = str(l)
- print(l,type(l )) # 结果为 abcde <class 'str'>
- name = 'hello'
- name = str(name)
- print(name,type(name)) # 结果为 hello <class 'str'>
- 数据类型转换:所有类型都可以被str转成字符串类型
- res=str([1,2,3])
- print(res,type(res)) # 结果为 [1, 2, 3] <class 'str'>
- l = [1,2,3,4,5,6]
- l = str([1,2,3,4,5,6])
- print(l,type(l)) # 结果为 [1, 2, 3, 4, 5, 6] <class 'str'>
- 常用操作+内置的方法
- 1、按索引取值(正向取+反向取) :只能取
- name = 'helloworld'
- print(name[0],name[1],name[2],name[3],name[4],type(name ))
- # 结果为 h e l l o <class 'str'>
- print(name[-1],name[-2],name[-3],name[-4],name[-5],type(name ))
- # 结果为 d l r o w <class 'str'>
- print(name[0])
- print(name[1])
- print(name[2])
- print(name[3])
- 2、切片(顾头不顾尾,步长)
- name = 'helloworld'
- mag = name[0:10] # 取 0 1 2 3 4 5 6 7
- print(mag) # 结果为 helloworld
- mag = name[::]
- print(mag) # 结果为 helloworld
- name = 'helloworld'
- mag = name[-1:-11:-1] # 取 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
- print(mag) # 结果为 dlrowolleh
- mag = name[-1::-1]
- print(mag) # 结果为 dlrowolleh
- mag = name[::-1]
- print(mag) # 结果为 dlrowolleh
- 3、长度len
- name = 'helloworld'
- print(len(name)) # 结果为10个字符
- 4、成员运算in和not in:判断一个子字符串是否存在于大字符串中
- name = 'helloworld'
- print('i'in name) # 结果为 False
- print('hell'in name) # 结果为 True
- 5、移除空白strip: 用来去除字符串左右两边的字符,不指定默认去除的是空格
- name = input('your username:>>>').strip()
- password = input('your passworld:>>>').strip()
- if name == 'helloworld'and password =='':
- print('login successful')
- else:
- print('error')
- name = ' helloworld'
- name = name.strip()
- print(name) # 结果为helloworld 前面没有空格
- name = '&*helloworld'
- name = name.strip('&*@#$%')
- print(name) # 结果为helloworld
- name = '&*hello####world&*'
- name = name.strip('#&*@#$%')
- print(name) # 结果为hello####world
- 注意 hello与world左边和右边的字符会消失,但是中间的字符还存在。
- name = name.strip('&*@#$%')
- print(name)
- print('&*helloworld@#$%'.strip('&*@#$%')) # 结果为helloworld
- 6、切分split:针对有规律的字符串,按照某种分隔符切成列表
- name = 'jerry:25:male'
- name = name.split(':')
- print(name) # 结果为 ['jerry', '25', 'male']
- name = 'jerry:25:male'
- name = name.split(':',1)
- print(name) # 结果为 ['jerry', '25:male']
- 7、join用法。用:号作连接符号将纯字符串的列表拼接成一个字符串
- name = ['jerry','','male']
- name = name[0]+':'+name[1]+':'+name[2]
- print(name) # 结果为 jerry:25:male
- name = ['jerry','','male']
- name = ':'.join(name)
- print(name) # 结果为 jerry:25:male
- 8、循环
- for name in 'hello':
- print(name)
- # 结果为
- h
- e
- l
- l
- o
- 1、strip,lstrip,rstrip
- 移除空格strip:移除字符串左右两边的字符
- lstrip:移除字符串左边的字符
- rstrip:移除字符串右边的字符
- print('******tom***********'.strip('*')) # 结果为 tom
- print('******tom***********'.lstrip('*')) # 结果为 tom***********
- print('******tom***********'.rstrip('*')) # 结果为 ******tom
- 2、lower,upper
- lower:大写字母变小写
- upper:小写字母变大写
- print('TOM123'.lower()) # 结果为 tom123
- print('tom123'.upper()) # 结果为 TOM123
- name = 'TOM'
- print(name.lower())
- name = 'tom'
- print(name.upper())
- 3、startswith,endswith
- name ='tom is me'
- print(name.startswith('t')) # 结果为 True 首字母
- print(name.endswith('e')) # 结果为 True 尾字母
- print(name.endswith('is')) # 结果为 False
- 4、format的三种玩。格式化输出。和%s类似。但format可以任意位置的
- name ='my name is %s my age is %s' %('tom',25)
- print(name) # 结果为 my name is tom my age is 25
- # 方法一
- tag = 'my name is {name} my age is {age}'.format(name = 'tom',age =25 )
- print(tag) # 结果为 my name is tom my age is 25
- 了解
- # 方法二
- tag ='my name is {0} my age is {1}'.format('tom',25)
- print(tag) # 结果为 my name is tom my age is 25
- # 方法三
- tag='my name is {0}{1} my age is {1}{1}{1}{1}'.format('tom',25)
- print(tag) # 结果为 my name is tom25 my age is 25252525
- 5、split,rsplit
- split:切分(从左往右)
- rsplit:切分(从右往左)
- msg='a:b:c:d'
- print(msg.split(':',1)) # 结果为 ['a', 'b:c:d']
- print(msg.rsplit(':',1)) # 结果为 ['a:b:c', 'd']
- name = 'jerry:tommy:judy:una'
- print(name.split(':',1)) # 结果为 ['jerry', 'tommy:judy:una']
- print(name.rsplit(':',1)) # 结果为 ['jerry:tommy:judy', 'una']
- 6、replace:替换
- name = 'jerry say :my name is jerry,a college student'
- print(name.replace('jerry','man',1)) # 结果为 man say :my name is jerry,a college student
- 7、isdigit:如果字符串是由纯数字组成的,则返回True
- print(''.isdigit()) Ture
- print('123123 '.isdigit()) False
- print('123123asdf'.isdigit()) False
- print('12312.3'.isdigit()) False
- 字符串类型总结:
- 存一个值
- 有序
- 不可变(值改变,但是id也跟着变,证明是产生了新的值,是不可变类
四、列表
- 按照位置记录多个任意类型的值。并且可以取出指定位置的值。
- 通过索引对应值,从0开始,代表的是位置。
- 定义:在中括号内用逗号隔开任意类型的值
- name = ['jerry', 25, 175.5, [120, 5000]]
- 数据类型转换:但凡能够被for循环的数据类型都可以传给list,被其转换成列表
- name = list('hello')
- print(name) # 结果为 ['h', 'e', 'l', 'l', 'o']
- name = ['jerry', 25, 175.5, [120, 5000]]
- name = list(name)
- print(name) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
- res = list({'a': 1, 'b': 2, 'c': 3})
- print(res) # 结果为 ['a', 'b', 'c']
- 常用操作 + 内置方法
- 1、按索引存取值(正向存取+反向存取):即可存也可以取
- name = ['jerry', 25, 175.5, [120, 5000]]
- print(name[0], name[1], name[2], name[3]) # 结果为 jerry 25 175.5 [120, 5000]
- print(name[-1], name[-2], name[-3], name[-4]) # 结果为 [120, 5000] 175.5 25 jerry
- # 注意注意注意:对于不存在的索引会报错
- 可存:
- dic = {"k1":111}
- dic['k2'] = 2222
- print(dic) # 结果为 {'k1': 111, 'k2': 2222}
- 2、切片(顾头不顾尾,步长)
- name = ['jerry', 25, 175.5, [120, 5000]]
- print(name[0:4:1]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
- print(name[::1]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
- print(name[0::1]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
- print(name[-1::-1]) # 结果为 [[120, 5000], 175.5, 25, 'jerry']
- print(name[::-1]) # 结果为 [[120, 5000], 175.5, 25, 'jerry']
- print(name[:]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
- print(name[::]) # 结果为 ['jerry', 25, 175.5, [120, 5000]]
- 3、长度len
- name = ['jerry', 25, 175.5, [120, 5000]]
- print(len(name)) # 结果为4
- 4、成员运算in和not in
- name = ['jerry', 25, 175.5, [120, 5000]]
- print('jerry' in name) # 结果为True
- print('tommy' not in name) # 结果为True
- 5、追加append和插入insert
- ①追加append:只能往后追加
- name = ['jerry', 25, 175.5, [120, 5000]]
- name.append('abc')
- print(name) # 结果为 ['jerry', 25, 175.5, [120, 5000], 'abc']
- name = ['jerry', 'tommy', 'judy']
- name.append('una')
- print(name) # 结果为 ['jerry', 'tommy', 'judy', 'una']
- ②插入insert:在指定位置插入
- name = ['jerry', 25, 175.5, [120, 5000]]
- name.insert(0, '')
- print(name) # 结果为 ['100000', 'jerry', 25, 175.5, [120, 5000]]
- name = ['jerry', 25, 175.5, [120, 5000]]
- name.insert(1, '')
- print(name) # 结果为 [ 'jerry','10000', 25, 175.5, [120, 5000]]
- name = ['jerry', 25, 175.5, [120, 5000]]
- name.insert(4, '')
- print(name) # 结果为 ['jerry', 25, 175.5, [120, 5000], '100000']
- 6、删除
- ①del:不是列表独有的删除,是通用的删除。del没有返回值,只是单纯的删除。
- name = ['jerry', 25, 175.5, [120, 5000]]
- del name[0]
- print(name) # 结果为 [25, 175.5, [120, 5000]]
- ②remove:指定要删除的那个元素。和del一样没有返回值,都只是单纯的删除
- name = ['a', 'bbb', 'c', 'd', 'e']
- name.remove('bbb')
- print(name) # 结果为 ['a', 'c', 'd', 'e']
- ③pop:(指定要删除的那个元素的索引)。有返回值,返回刚刚删掉的那个元素。 意为取走
- name = ['a', 'bbb', 'c', 'd', 'e']
- name.pop()
- print(name) # 结果为 ['a', 'bbb', 'c', 'd'] # 不指定位置,默认删除最后一个
- name = ['a', 'bbb', 'c', 'd', 'e']
- name.pop(0)
- print(name) # 结果为 ['bbb', 'c', 'd', 'e']
- 7、循环
- name = ['jerry', 25, 175.5, [120, 5000]]
- for item in name:
- print(item)
- # 结果为
- jerry
- 25175.5
- [120, 5000]
- 8、clear:清除
- name = ['aaa', 'bb', 345]
- name.clear()
- print(name) # 结果为[]
- 9、extend加多个元素
- name = ['aaa', 'bb', 345]
- name.extend(['tommy', 120, 175.5])
- print(name) # 结果为 ['aaa', 'bb', 345, 'tommy', 120, 175.5]
- 10、.reverse:反过来
- name = ['aaa', 'bb', 345]
- name.reverse()
- print(name) # 结果为 [345, 'bb', 'aaa']
- 11、sort 排序:只有在类中中所有元素都是同种类型的情况下才能用sort排序(升序)
- name = [1, 100, 1000]
- name.sort()
- print(name) # 结果为 [1, 100, 1000]
- name = ['z', 'd', 'a']
- name.sort()
- print(name) # 结果为 ['a', 'd', 'z']
- 列表类型总结:
- 存多个值
- 有序
- 可变
五、练习
- 1、写代码,有如下变量,请按照要求实现每个功能 name = " aleX"
- 1) 移除 name 变量对应的值两边的空格,并输出处理结果
- name = " aleX"
- print(name.strip())
- 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
- name = " aleX"
- print(name.startswith('al'))
- 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
- name = " aleX"
- print(name.endswith('X'))
- 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
- name = " aleX"
- print(name.replace('l', 'p', 3))
- 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
- name = " aleX"
- print(name.split('l'))
- 6) 将 name 变量对应的值变大写,并输出结果
- name = " aleX"
- print(name.upper())
- 7) 将 name 变量对应的值变小写,并输出结果
- name = " aleX"
- print(name.lower())
- 8) 请输出 name 变量对应的值的第 2 个字符?
- name = " aleX"
- print(name[1])
- 9) 请输出 name 变量对应的值的前 3 个字符?
- name = " aleX"
- print(name[:3])
- 10) 请输出 name 变量对应的值的后 2 个字符?
- name = " aleX"
- print(name[-2:])
- 11) 请输出 name 变量对应的值中 “e” 所在索引位置?
- name = " aleX"
- print(name.index('e'))
- 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
- name = " aleX"
- print(name[:4:1])
day5 五、数字类型、字符串,列表类型的基本操作和内置方法的更多相关文章
- python基础(5)---整型、字符串、列表、元组、字典内置方法和文件操作介绍
对于python而言,一切事物都是对象,对象是基于类创建的,对象继承了类的属性,方法等特性 1.int 首先,我们来查看下int包含了哪些函数 # python3.x dir(int) # ['__a ...
- day09-1 列表,元祖的内置方法
目录 列表类型的内置方法 作用 定义方式 方法 优先掌握 需要掌握 储存一个值or多个值 有序or无序?(有序:有索引, 无序:无索引) 可变or不可变(可变:值变id不变,不可变:值变id也变) 元 ...
- [Python3] 009 字符串:给你们看看我的内置方法 第一弹
目录 前言 如何查看 python3 中和 str 有关的方法 字符串方法 1. capitalize() 2. casefold() 3. center(width) 4. count(sub[, ...
- [Python3] 010 字符串:给你们看看我的内置方法 第二弹
目录 少废话,上例子 1. isidentifier() 2. islower() 3. isnumeric() 4. isprintable() 5. isspace() 6. istitle() ...
- [Python3] 011 字符串:给你们看看我的内置方法 第三弹
目录 少废话,上例子 1. encode(encoding='utf-8', errors='strict') 2. expandtabs([tabsize=8]) 借此机会简单地说一说 print( ...
- day05_08 列表讲解、切片、内置方法
1.0 查询: a = ['wuchao','jinxing','xiaohu','sanpang','ligang'] print(a[3]) #>>>sanpang prin ...
- Python基础部分:9、数据的类型和内置方法
目录 一.数据类型内置方法理论 1.什么是数据内置方法 2.如何调用数据内置方法 二.整型(int)内置方法与操作 1.类型转换 2.进制数转换 三.浮点型(float)内置方法与操作 1.类型转换 ...
- python学习番外篇——字符串的数据类型转换及内置方法
目录 字符串的数据类型转换及内置方法 类型转换 内置方法 优先掌握的方法 需要掌握的方法 strip, lstrip, rstrip lower, upper, islower, isupper 插入 ...
- python基础——4(数字、字符串、列表类型的内置方法介绍)
目录 一.可变与不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变与不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,id也跟着改变,证明产 ...
随机推荐
- MySql之插入操作
一:插入一行数据 INSERT INTO tableName(列名...) VALUES(对应列名的值); 二:插入多行 INSERT INTO tableName(列名...) VALUES(对应列 ...
- Remmina剪切板不正常的问题
引用:http://forum.ubuntu.org.cn/viewtopic.php?f=73&p=3135388&sid=399b5566833c294045795a4b328fb ...
- swift3 单例写法
import UIKit class SingleOnce { // 单例 static let shared = SingleOnce.init() private init(){} // 其他方法 ...
- Redis server went away的解决方案
Redis server went away出现的问题如下: 1.看redis服务是否启动,包括端口 2.看是否是服务器端的防火墙引起的,iptables和selinux 3.看是否是redis.co ...
- 【C语言】字节对齐问题(以32位系统为例)
1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...
- Chrome 调试技巧: 调整网速
为了方便调试某些内容,比如我想网速设置为 1kb每秒,甚至0kb每秒. 1.打开chrome DevTool ,切换到 "Network".找到最右侧 "Online&q ...
- springboot 中打印 sql 语句
在配置文件中 application.yml 配置如下其一即可 方式一: logging: level: com.xxx.com.dao.mapper: DEBUG //包路径为mapper文件包路径 ...
- vertx插件使用vertx-maven-plugin
http://search.maven.org http://search.maven.org/#artifactdetails%7Cio.fabric8%7Cvertx-maven-plugin%7 ...
- fputc和putc和putchar函数的用法
功 能: 输出一字符到指定流中 putc()与fputc()等价.不同之处为:当putc函数被定义为宏时,它可能多次计算stream的值. 关于fputc(): 原型:int fputc(char c ...
- not in 的优化
//---------------------- 建表1 ---------------------- create table TESTTABLE( id1 VARCHAR2(12), name V ...