数据类型的内置方法 可变类型与不可变类型

数据类型的内置方法

什么是数据类型的内置方法?

数据类型自带的操作方法或功能

调用数据类型的内置的方法的方式是:

句点符

数据类型.方法名()

eg:
	变量名.方法名()
    数据值.方法名()

1.整型相关操作方法

  • 类型转换

    int(待转换的数据类型)

    1.浮点型可以转整型 '只要小数点前面的整数 不做四舍五入'
    
    2.字符串可以转整型 '但是字符串内部必须是整数才可以'
    
    3.布尔值的使用 int(True) #1  int(False) #0
    
    4.其他类型转整型会报错
    
  • 进制数转换

    十进制转其他进制:
    十进制转二进制>>bin()
    十进制转八进制>>oct()
    十进制转十六进制>>hex()
    
    '''
    0b >>> 二进制标识
    0o >>> 八进制标识
    0x >>> 十六进制标识
    数字开头没有任何标识的激素hi十进制
    '''
    
    其他进制转十进制
    '''自动转'''
    二进制转十进制>>int(0b0101110101)
    二进制转八进制>>int(0o155)
    二进制转十六进制>>int(0x64)
    '''手动转'''
    二进制转十进制>>int('0b0101110101',2)
    八进制转十进制>>int('0o155',8)
    十六进制
    转十进制>>int('0x64',16)
    

2.浮点型相关操作方法

  • 类型转换

    float(待转换的数据)

    1.整型可以转成浮点型 '后面跟一个小数点1.0'
    
    2.字符串可以转成浮点型 '但是字符串内必须是数字(整数或者小数)'
    
    3.布尔值的使用 int(True) #1.0  int(False) #0.0
    
    4.其他类型转浮点型会报错
    
  • 数学运算逻辑容易出错

    a = 23.00
    b = 1.2
    c = a * b
    print(c) # 27.599999999999998
    
    '''
    由以上举例得出:python对数字运算精确度很低,容易出错!
    如需要精准的计算需借助其他模块!
    '''
    

3.字符串相关操作方法

  • 类型转换

    str(待转换的数据)

    1.所有的数据类型都可以转换成字符串类型
    
    2.给所有数据类型前后加引号也可以转换成字符串类型
    
  • 常用内置方法

    • 1.索引取值(单个字符串)

      1.索引取值是从0开始的 顾头不顾尾
      2.超出索引的取值范围就会报错
      3.索引支持负数 [-1] 就是取最后一个
      
      s1 = 'abcde'
      print(s1[0])   # a
      print(s1[-1])  # e
      
    • 2.切片取值(多个字符)

      l1 = [1,2,3,4,5,6,7]
      print(l1[:])  # [1,2,3,4,5,6,7]全要
      print(l1[:3]) #[1,2,3]要前3个
      print(l1[2:]) #[3,4,5,6,7]前2个不要剩下的全要
      print(l1[2:5])#[3,4,5]要索引2-索引5之间的 索引顾头不顾尾 所以最后一位不拿
      print(l1[-3:-1])#[5,6] 从后往前拿
      
    • 3.修改切片间隔

      s1 = 'abcde'
      print(s1[0:5:1]) # abcde 取索引0~索引4的值且间隔1
      print(s1[0:5:2]) # ace   取索引0~索引4的值且间隔2
      print(s1[::2])   # ace   取所有值且间隔2
      
    • 4.统计字符次数

      len(待统计的变量名或数据值)

      s1 = 'abcde'
      print(len(s1))  # 5
      
    • 5.移除首尾指定字符

      strip(想要移除的符号)

      name = '$张三$'
      
      1)移除首尾所有指定字符
        print(name.strip('$'))   # 张三   
      2)移除首指定字符
        print(name.lstrip('$'))  # 张三$ 
      3)移除尾指定字符
        print(name.rstrip('$'))  # $张三  
      4)括号内不写默认移除空格
        print(name.strip())      # 张三   
        '常用于获取用户输入移除用户不小心打的空格'
      
    • 6.切割字符串中的指定字符

      split('')当字符串中有多个重复字符分割不同数据时,可切割该指定字符以列表的形式显示

      a = 'aaa|bbb|ccc'
      
      1)切割所有指定字符
        print(a.split('|'))  # ['aaa', 'bbb', 'ccc'] 
        #注意:此处可以用【解压赋值】依次赋值给不同变量名!
      2)从左往右切指定个数
        print(a.lsplit('|',maxsplit=1))  #['aaa', 'bbb|ccc'] 
      3)从右往左切指定个数
        print(a.rsplit('|',maxsplit=1)) #['aaa|bbb', 'ccc'] 
      
      
    • 7.字符串大小写相关

      uppre() lower() isupper() islower()常用于验证码

      a = 'aHGdb'
      1.将字符串全部转成大小写
      print(a.upper())
      print(a.lower())
      
      2.判断当前字符串是否为纯大小写 结果是布尔值
      print(a.isupper())
      print(a.islower())
      
    • 8.字符串格式化输出

      方式1):等价于%s 没优势
           lx = '我的名字是{},我的年龄是{}'
           print(lx.format('张三',18))
           #结果为:我的名字是张三,我的年龄是18
      方式2):支持索引取值,可以重复使用
           lx = '我的名字是{0},我的年龄是{1}{0}{1}'
           print(lx.format('张三',18))
           #结果为:我的名字是张三,我的年龄是18张三18
      方式3):支持关键字取值(按K取值),可重复使用
           lx = '名字是{name}{name}年龄是{age}'
           print(lx.format(name='张三',age=18))
           #结果为:名字是张三张三年龄是18
      方法4):最常用!!!*****************
           name = '张三'
           age = 18
           print(f'名字是{name}年龄是{age}')
           #结果为:名字是张三年龄是18
      
      
    • 9.判断字符串中是否是纯数字

      isdigit()判断是否为纯数字 常用于用户输入时校验 结果是布尔值

      print('123'.isdigit())  # True
      print('123a'.isdigit()) # False
      
  • 其他内置方法

    • 1.替换字符串中指定内容

      replace()括号内写被替换的字符与 想要替换的字符

      a='a a a b b b'
      
      1)从左往右替换所有指定内容
        print(a.replace('a','c'))
        #结果为:c c c b b b
      2)从左往右替换指定个数的内容
        print(a.replace('a','c',1))
        #结果为:c a a b b b
      
    • 2.字符串的拼接

      '' . join([a,b]) 引号中间可以加想要拼接的字符 也可以不写 a,b分别是想要拼接起来的数据

      a='张'
      b='三'
      
      方式1):直接用+号,但是易占用较多内存
          print(a+b)  # 张三
      方式2):直接*该字符串实现拼接多个
          print(a*2)  # 张张
      方式3):建议使用join方法!切可以在拼接中插入指定字符
          print(''.join([a,b]))   # 张三
          print('|'.join([a,b]))  # 张|三
      
    • 3.统计指定字符出现的次数

      count()统计个数

      a='aabcdef'
      print(a.count('a')) #2
      '''统计a出现的次数'''
      
    • 4.判断字符串开头或者结尾

      startswith()判断开头是否为某个值

      endswith()判断结尾是否为某个值

      a='hello'
      
      #判开头是否是'he'
        print(a.startswith('he')) # True
      #判断结尾是否是'lo'
        print(a.endswith('lo')) # True
      
      
    • 5..查找某个字符对应索引值

      index() 存在则返回索引值 如果有相同的 则只会返回从左边数第一个查到的某个字符的索引值 不存在则报错

      find()存在则返回索引值 如果有相同的 则只会返回从左边数第一个查到的某个字符的索引值 不存在返回-1

      a='helloh'
      
      #获取'h'的索引值 不存在则报错
        print(a.index('h')) # 0
      #获取'a'的索引值 不存在则返回-1
        print(a.find('a'))  # -1
      
      
    • 6.正文相关转换首字母大写

      title() 将所有字符串的首字母大写

      capitalize() 将第一个字符串的首字母大写

      a = 'my name is zhangsan'
      1)将所有单词的首字母大写
        print(a.title())
        #结果为:My Name Is Zhangsan
      2)将字符串第一个字母大写
        print(a.capitalize())
        #结果为:My name is zhangsan
      
      

4.列表相关操作方法

  • 类型转换

    list(其他数据类型)

    能够被for循环的数据都可以转换成列表

    支持for循环的数据类型有:列表、字典(只有k参与)、元组、集合、字符串

    字符串、字典、元组、集合:
    
    print(list('123'))  # ['1', '2', '3']
    print(list({'name':'张三','age':'18'}))  # ['name', 'age']
    print(list((1,2,3)))  # [1, 2, 3]
    print(list({1,2,3}))  # [1, 2, 3]
    
    
  • 常用内置方法

    • 1.索引取值(单个数据值)

      '''
      1.索引值是从0开始(顾头不顾尾)
      2.超出索引范围会直接报错
      3.索引可跟负数,[-1]为取最后一个
      '''
      l1 = [1, 2, 3]
      print(l1[0])   # 1
      print(l1[-1])  # 3
      
      
    • 2.切片取值(多个数据值)

      l1 = [1,2,3,4,5,6,7]
      print(l1[:])  # [1,2,3,4,5,6,7]全要
      print(l1[:3]) #[1,2,3]要前3个
      print(l1[2:]) #[3,4,5,6,7]前2个不要剩下的全要
      print(l1[2:5])#[3,4,5]要索引2-索引5之间的 索引顾头不顾尾 所以最后一位不拿
      print(l1[-3:-1])#[5,6] 从后往前拿
      
    • 3.修改切片间隔

      l1 = [1,2,3,4,5]
      print(l1[0:5:1]) # [1,2,3,4,5] 取索引0~索引4的值且间隔1
      print(l1[0:5:2]) # [1,3,5]     取索引0~索引4的值且间隔2
      print(l1[::2])   # [1,3,5]     取所有值且间隔2
      
      
    • 4.统计列表数据值个数

      len() 统计数据值个数

      l1 = [1,2,3,4,5]
      print(len(l1))  # 5
      
      
    • 5.修改数据值

      通过索引找出想要修改的数据值 直接赋一个新的数据值

      l1 = [1,2,3,4,5]
      l1[0] = 'z'
      print(l1)
      #结果为:['z',2,3,4,5]
      
      
    • 6.添加数据值

      append()尾部追加

      insert()括号内跟索引 与 想要插入的数据值

      extend()合并两个列表

      1)尾部追加数据值
        l1 = [1, 2, 3, 4, 5]
        l1.append('zzz')
        print(l1)
        #结果为:[1, 2, 3, 4, 5, 'zzz']
      2)任意位置插入数据值(在索引几的位置插入什么数据)
        l1 = [1, 2, 3, 4, 5]
        l1.insert(1,'zzz')
        print(l1)
        #结果为:[1, 'zzz', 2, 3, 4, 5]
      3)扩展列表、合并列表
        l1=[1,2,3]
        l2=[4,5,6]
      方式一:不建议使用
        print(l1+l2)
        #结果为:[1,2,3,4,5,6]
      方式二:底层是用for+append实现的
        l1.extend(l2)
        print(l1)
        #结果为:[1,2,3,4,5,6]
      
      
    • 7.删除数据

      del() eg:del l1[0] 删除列表1中的索引值为0的数据值

      remove()删除指定数据

      pop()弹出后可以赋给一个变量名 然后删除 也可以接着用

      l1 = [1,2,3,4,5]
      1)通用删除 del:(删除某个索引对应的值)
        del l1[0]
        print(l1)
        #结果为:[2, 3, 4, 5]
      2)指定删除 remove:(彻底删除指定的数据值)
        l1.remove(2)
        print(l1)
        #结果为:[1, 3, 4, 5]
      3)取出后删除 pop:(可以把取出的值赋值给一个变量)
        '括号内不写默认最后一个,0代表第一个,1代表第二个'
        l1.pop()
        print(l1)
        #结果为:[1, 2, 3, 4]
        a = l1.pop()
        print(a)
        #结果为:5
        pop常用于观展人数中,xxx退出观战
      
      
    • 8.查看数据值对应的索引值

      index() 查看某个数据的索引值

      l1=[1,2,3,4]
      print(l1.index(1))
      #结果为:0
      
      
    • 9.统计某个数据值出现的次数

      count()统计数据值出现的次数

      l1=[1,1,2,3,4,5]
      print(l1.count(1))
      #结果为:2
      
      
    • 10.数据值排序

      sort()升序

      sort(revrese = True)降序

      l1=[4,2,5,1,2,3]
      1)升序:
        l1.sort()
        print(l1)
        #结果为:[1, 2, 2, 3, 4, 5]
      2)降序:
        l1.sort(reverse=True)
        print(l1)
        #结果为:[5, 4, 3, 2, 2, 1]
      
      
    • 11.反转列表数据值顺序

      reverse()将列表反转

      跟升序降序不同

      l1=[4,2,5,1,2,3]
      l1.reverse()
      print(l1)
      #结果为:[3, 2, 1, 5, 2, 4]
      
      
    • 12.两个列表比较

      a = [99,11]
      b = [11,22,33]
      print(a > b)
      #结果为:True
      
      l1 = ['a','b']
      l2 = ['A','B']
      print(l1 > l2)
      #结果为True
      '''
      1.两个列表在比较大小时,是按照索引0来互相比较。
      2.不同数据类型之间无法比较
      3.a比A大的原因是因为中间涉及到字符编码。a=97 A=65
      '''
      
      

5.字典相关操作方法

  • 类型转换

    dict(其他数据类型)

    字典一般是直接定义 不类型转换

  • 常用内置方法

    • 1.字典取值

      按k取值

      .get()常用来取字典中的k键

      按k取值 k不存在就会报错
      
      d = {'name':'张三','age':18}
      print(d['name'])
      #结果为:张三
      print(d['xxx'])
      #结果为:会报错
      
      get取值 k不存在时返回none
      
      d = {'name':'张三','age':18}
      print(d.get('name'))
      #结果为:张三
      print(d.get('xxx'))
      #结果为:None
      
    • 2.修改字典v值

      直接按k键 = 想要修改的新数据值

      d = {'name':'张三','age':18}
      d['name']='李四'
      print(d)
      #结果为:{'name': '李四', 'age': 18}
      
      
    • 3.新增键值对

      当k存在时 修改k对应的v值

      当k不存在时 新增键值对

      d = {'name':'张三','age':18}
      d['pwd']=123
      print(d)
      #结果为:{'name': '张三', 'age': 18, 'pwd': 123}
      
      
    • 4.删除数据

      del 直接删除

      pop() 可以给弹出的数据值绑定一个变量名 接着用

      d = {'name':'张三','age':18}
      
      1)del d['name'] #删除name的键值对
      
      2)a = d.pop('name')
        print(a)#打印出来的就是删除掉的V值
        print(d)#打印出来的就是删除后的列表
      
      
      
    • 5.统计字典中的键值对个数

      len()统计字典中键值对的个数

      d = {'name':'张三','age':18}
      print(len(d))
      #结果为:2
      
      
    • 6.获取所有键、值、键值对数据

      keys() 获取所有键 k

      values()获取所有值 v

      items()获所有键值对 k:v 支持for循环

      d = {'name':'张三','age':18}
      d = {'name':'张三','age':18}
      
      获取所有【键】
          print(d.keys())   # dict_keys(['name', 'age'])
      获取所有【值】
          print(d.values()) # dict_values(['jason', 18])
      获取所有【键值对】(组成列表套元组形式)
          print(d.items())  # dict_items([('name', 'jason'), ('age', 18)])
      
          
      items获取的值 支持for循环:
      for k,v in d.items():
          print(f'{k}:{v}')
          #结果为:
          #name:jason
          #age:18
      
      
    • 7.快速构造字典

      dict.formkeys( [ ' ' , ' ' ],' ' )

      快速生成一个值相同的字典
      '第一个列表里的数据值当作键,第二个是公共的数据值(所有键的值都相同)'
      
      d1=dict.fromkeys(['name','pwd','hobby'],123)
      print(d1)
      #结果为:{'name': 123, 'pwd': 123, 'hobby': 123} 后期可以再单个修改对应的值数据
      
      
      笔试题:
      res=dict.fromkeys(['name','pwd'],[])
      print(res)#{'name': [], 'pwd': []}
      res['name'].append('jason')
      res['pwd'].append(123)
      print(res)#{'name': ['jason', 123], 'pwd': ['jason', 123]}
      '当第二个公共数据值是可变类型的 通过任何键调用内置方法去修改值时会影响所有的键'
      
      
    • 8.从列表中取出最后的键值对

      popitem()

      d={'name':'jason','age':18,'pwd':'123'}
      print(d.popitem()) # 也可以赋值给一个变量名,打印变量名
      #打印第一次结果为:('pwd', '123')  
      print(d.popitem())
      #打印第二次结果为:('age', 18)
      print(d)
      #此时打印字典的结果为:{'name': 'jason'}
      
      当没有键值对可打印时会报错
      
      

6.元组相关操作方法

  • 类型转换

    tuple(其他类型数据)

    支持for循环的数据类型都支持转成元组:列表、字典、字符串、集合

    print(tuple([1,2,3])) # (1,2,3)
    print(tuple({'name':'张'})) # ('name',)
    print(tuple((1,2,3))) # (1,2,3)
    print(tuple({1,2,3})) # (1,2,3)
    
    
  • 常用内置方法

    • 注意:

      注意:
      1.元组内如果只有一个数据值,结尾要跟逗号
          t1 = () #空元组
          t1 = (1,)
      2.元组内索引绑定的内存地址不能被修改#除非是可变类型[元组里面的列表就可以增加或者删除]
          t1 = (1, 2, 3, [1, 2])
          # t1.append(5) #结果会报错!
          t1[-1].append(5)
          print(t1)  # (1, 2, 3, [1, 2, 5])
      3.元组不能新增或删除数据#除非是可变类型
      
      
    • 1.索引取值

      t1=(1,2,3,4,5)
      print(t1[0])   # 1
      print(t1[-1])  # 5
      
      
    • 2.切片操作

      t1=(1,2,3,4,5)
      print(t1[:])   # (1,2,3,4,5) 取所有值
      print(t1[:3])  # (1,2,3) 取索引0~索引2的值
      print(t1[1:3])  # (2,3) 取索引1~索引2的值
      print(t1[-3:-1])  # (3,4) 取倒数第二(包含)~倒数第一(不包含)的值
      
      
    • 3.切片间隔/方向

      t1=(1,2,3,4,5,6)
      print(t1[0:5:1]) # (1,2,3,4,5) 取索引0~索引4的值且间隔1
      print(t1[0:5:2]) # (1,3,5)   取索引0~索引4的值且间隔2
      print(t1[::2])   # (1,3,5)   取所有值且间隔2
      print(t1[::-1])  # (6,5,4,3,2,1) 取所有值并改变字符串方向(后进先出)
      
    • 4.统计数据值个数

      len()想要统计的数据

      t1=(1,2,3,4,5,6)
      print(len(t1))  # 6
      
      
    • 5.统计某个数据值出现的次数

      count()

      t1=(1,2,3,4,5,6)
      print(t1.count(2))  # 1
      
      
    • 6.统计元组内对应索引值

      index()

      t1=(1,2,3,4,5,6)
      print(t1.index(1))  # 0
      
      

7.集合相关操作方法

  • 类型转换

    set(其他类型数据)

    print(set('abc'))  # {'a','b','c'} 字符串
    print(set([1,2,3]))  # {1, 2, 3} 列表
    print(set({'name':'jason'}))  # {'name'} 字典
    print(set((1,2,3)))  # {1, 2, 3} 元组
    
    整型、浮点型、布尔值会报错
    
    注意:
    1.集合里的'数据值'必须是不可变类型(整型、浮点型、字符串、元组)
    2.集合内是无序的 没有索引概念
    3.如果想单独取数据值应该转成列表去取。
    
    
  • 常用内置方法

    集合不常用 只在去重、关系运算时才会考虑使用集合

    • 1.去重

      先转成列表在转成集合

      eg:把以下列表去重
      l1=[1,2,3,2,1,3]
      s1=set(l1) #把该列表转成集合
      l1=list(s1) #把该集合再转回列表
      print(l1)
      #结果为:[1, 2, 3]
      
      '集合的去重是无序的,有时候无法保留原先顺序'
      
      
    • 2.关系运算

      常用做差异校验
      eg:模拟两个人的好友
      f1 = {'jason','tony','oscar','jerry'}
      f2 = {'kevin','jerry','jason','lili'}
      
      1.求f1和f2的共同好友
      print(f1 & f2) #{'jason','jerry'}
      2.求是f1单独认识的好友
      print(f1 - f2)#{'oscar','tony'}
      3.求f1和f2所有的好友
      print(f1 | f2)#{'oscar','jason','kevin','lili','tony','jerry'}
      4.求f1和f2各自单独认识的好友
      print(f1 ^ f2)#{'lili','oscar','tony','kevin'}
      5.父集、子集
      print(f1 < f2)#false
      print(f1 > f2)#false
      '集合在做父子比较时是依照谁包含谁来判断'
      
      

可变类型与不可变类型

可变类型 不可变类型
字典、列表、集合 整型、浮点型、字符串、布尔值
值改变、内存地址不变(改自身) 值改变、内存地址也变(产生一个新的结果)

1.不可变类型

#值改变,内存地址也变(产生新的结果)
s1='$$jason$$'
s1.strip('$')

'由于产生的是新的结果,所以打印原字符串没有变化'
print(s1)  
#结果为:$$jason$$

'因为产生了新的结果,所以可以打印出来(可直接打印出来,也可以赋值一个变量名接收后打印)''
print(s1.strip('$'))  
#结果为:jason

2.可变类型

 #值改变,内存地址不变(改自身)
l1=[11,22,33]
l1.append('z')

'由于改的是自身 所以打印原本的列表就是修改后的列表'
print(l1)  
#结果为:[11,22,33,'z']

'因为没有产生新的结果,所以打印出来的是None'
print(l1.append('z'))  
#结果为:None
posted @ 2023-01-17 23:45  李李大冒险  阅读(44)  评论(0编辑  收藏  举报
  1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 迷人的危险3 FAFA
  4. 4 山楂树之恋 程佳佳
  5. 5 summertime cinnamons / evening cinema
  6. 6 不谓侠(Cover 萧忆情Alex) CRITTY
  7. 7 神武醉相思(翻自 优我女团) 双笙(陈元汐)
  8. 8 空山新雨后 音阙诗听 / 锦零
  9. 9 Wonderful U (Demo Version) AGA
  10. 10 广寒宫 丸子呦
  11. 11 陪我看日出 回音哥
  12. 12 春夏秋冬的你 王宇良
  13. 13 世界が终わるまでは… WANDS
  14. 14 多想在平庸的生活拥抱你 隔壁老樊
  15. 15 千禧 徐秉龙
  16. 16 我的一个道姑朋友 双笙(陈元汐)
  17. 17 大鱼 (Cover 周深) 双笙(陈元汐)
  18. 18 霜雪千年(Cover 洛天依 / 乐正绫) 双笙(陈元汐) / 封茗囧菌
  19. 19 云烟成雨(翻自 房东的猫) 周玥
  20. 20 情深深雨濛濛 杨胖雨
  21. 21 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  22. 22 斑马斑马 房东的猫
  23. 23 See You Again Wiz Khalifa / Charlie Puth
  24. 24 Faded Alan Walker
  25. 25 Natural J.Fla
  26. 26 New Soul Vox Angeli
  27. 27 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  28. 28 像鱼 王贰浪
  29. 29 Bye Bye Bye Lovestoned
  30. 30 Blame You 眠 / Lopu$
  31. 31 Believer J.Fla
  32. 32 书信 戴羽彤
  33. 33 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  34. 34 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  35. 35 慢慢喜欢你 LIve版 戴羽彤
  36. 36 病变 戴羽彤
  37. 37 那女孩对我说 (完整版) Uu
  38. 38 绿色 陈雪凝
  39. 39 月牙湾 LIve版 戴羽彤
像鱼 - 王贰浪
00:00 / 04:45
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 周有才

作曲 : 周有才

这是一首简单的歌

没有什么独特

试着代入我的心事

它那么幼稚

像个顽皮的孩子

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

我要记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

只剩自己就好