一、可变与不可变

可变:值改变,但是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 五、数字类型、字符串,列表类型的基本操作和内置方法的更多相关文章

  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. Golang select

    Golang下select的功能和Linux IO复用中的select, poll, epoll相似,是监听 channel 操作,当 channel 操作发生时,触发相应的动作. package m ...

  2. AirServer for Mac(Airplay 终端实用工具)破解版安装

    1.软件简介    AirServer 是一款 Mac 上的 AirPlay 终端,通过这款软件,利用 AirPlay 技术,iPhone 或 iPad 就可以无线连接到 Mac 上,不需要在 iPh ...

  3. C# 使用NLog记录日志入门操作

    环境:win7 64位, VS2010 1.首先用VS2010创建命令行工程NLogDemo 2.在程序包管理器控制台中输入:Install-Package NLog -Version 4.4.12 ...

  4. 为OLED屏添加GUI支持6:进度条控件

    为OLED屏添加GUI支持6:进度条控件 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:S ...

  5. Linux好用的工具命令 - nl/du

    nl 添加行号后打印输出文本内容,以下例子演示了cat 和nl 输出nlDemo文档的区别. [root@ptarmiganantelope:~]# cat nlDemo root:x:0:0:roo ...

  6. 8个超实用的jQuery插件应用

    自jQuery诞生以来,jQuery社区都在不断地.自发地为jQuery创建许许多多功能不一的插件应用,很多jQuery插件非常实用,对我们的前端开发帮助相当大,不仅可以更完美的完成指定功能,而且节省 ...

  7. [NM]打开NetworkManager和wpa_supplicant的DEBUG接口

    turn on the DEBUG log in /etc/NetworkManager/NetworkManager.conf and restart NetworkManager. [loggin ...

  8. Java知多少(59)创建多线程

    到目前为止,我们仅用到两个线程:主线程和一个子线程.然而,你的程序可以创建所需的更多线程.例如,下面的程序创建了三个子线程: // Create multiple threads. class New ...

  9. 关于使用maven打包如何聚合资源文件

    多数情况下,我们使用maven管理多个子工程,在最后maven打包阶段将多个子工程聚合到一个jar或war包.单个子工程会有自己独立的资源配置文件,在打包的时候我们需要将其聚合在一起(各子工程中的配置 ...

  10. Android集成Google地图详细步骤记录

    先贴下Google官方的地图demo地址:https://github.com/googlemaps/android-samples 那么接下来第一步,申请Google的API key. 使用谷歌账号 ...