一、可变与不可变

可变:值改变,但是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. 【Mac使用系列】【转载】十几个Mac实用工具

    本文摘自:https://www.jianshu.com/p/15c7b3711005 经过验证,这几个不存在: CleanMyMac.OmniGraffle,我将可用的放在云盘里,有需要的话,可以从 ...

  2. javascript arguments介绍

    来源于: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments https://g ...

  3. Android——进程通信/ AIDL/Message相关知识总结贴

    Android多进程通信 http://www.apkbus.com/android-83462-1-1.html Android 跨进程通信(一) http://www.apkbus.com/and ...

  4. Andriod书籍准备

    老大说公司准备开发MFC项目,过了一段时间又说开发Andriod,好吧,我现在准备Andriod. 鬼知道过段时间会变成什么. http://pan.baidu.com/share/link?shar ...

  5. LightCapture for Mac(流程化截图工具)破解版安装

    1.软件简介    LightCapture 是 macOS 系统上的截图软件.LightCapture Mac 版号称是用最简洁的方式来截图,其的界面也确实非常简单整洁,不过功能同样出色,一键截屏. ...

  6. IDEA使用笔记(四)——工具栏的显示隐藏切换

    这也是在玩快捷键的时候,自己试验出来的,觉得不常用但是一旦想用了可能一下不知道怎么弄,还需要找,不如记下来,起码能加深一下印象!

  7. [k8s]nginx-ingress配置4/7层测试

    基本原理 default-backend提供了2个功能: 1. 404报错页面 2. healthz页面 # Any image is permissable as long as: # 1. It ...

  8. 【Linux】Linux基本命令扫盲

    [VI使用] 1.在命令行模式     :在vi编辑器中将光标放在函数上, 定位到每行的开头,不进入输入模式,$ 定位到每行的末尾     :[n]dd 剪贴n行,p粘贴     : dG 删除光标后 ...

  9. 阅读《深入应用C++11:代码优化与工程级应用》

    虽然一直是写C++的,但是却对C++11了解的不是太多,于是从图书馆借了本书来看 这本书分两大部分: 一.C++11的新特性讲解 二.工程级代码中C++11的应用 这样的安排很合理,第一部分把新特性讲 ...

  10. [转] BootStrap table增加一列显示序号

    原文地址:https://blog.csdn.net/aboboo5200/article/details/78839208 最近由于项目需要,使用BootStrap table做数据展示,其中要在第 ...