问题1: 加法运算符重载

如果我们有两个列表对象,我要将两个列表中的元素依下标进行加和,我们该如何实现?

1列表对象的加法

list1 = [1,2,3,4]
list2 = [10,20,30,40]
list1 + list2
[1, 2, 3, 4, 10, 20, 30, 40]

2实现的第一种方法

list1_2 = []
for i,j in zip(list1,list2):
list1_2.append(i+j)
print(list1_2)
[11, 22, 33, 44]

3实现的第二种方法

class add_list:
def __init__(self, list_orignal):
self.data = list_orignal[:]
def __add__(self, obj):
x = len(self.data)
y = len(obj.data)
max_value = x if x<y else y
xy = []
for n in range(max_value):
xy.append(self.data[n]+obj.data[n])
return add_list(xy[:])
list1 = add_list([1,2,3,4,5])
list2 = add_list([10,20,30,40])
list1_2 = list1 + list2
print(list1_2.data)
[11, 22, 33, 44]

问题2:索引和分片重载

如果我们要自己创造一个对象,让这个对象具有列表、字符串等的相关功能,该如何实现?

class My_obj:
# 初始化相关数据,使对象具有data属性,并赋值一个序列a
def __init__(self,a):
self.data = a[:]
# 创建索引功能
def __getitem__(self, index):
return self.data[index]
# 创建赋值功能
def __setitem__(self,index,value):
self.data[index]=value
# 创建删除功能
def __delitem__(self,index):
del self.data[index]
x = My_obj([1,2,3,4,5,6])
x[:4]
[1, 2, 3, 4]
x[0] = 'a'
print(x.data)
['a', 2, 3, 4, 5, 6]
del x[0]
x.data
[2, 3, 4, 5, 6]

问题3,字符串问题

  • 字符串应用

    '1 2 3 4 5 6' ----> '6 5 4 3 2 1'
data = '1 2 3 4 5 6'
data_1 = data.strip().split(' ')
data_1.reverse()
print(' '.join(data_1))
6 5 4 3 2 1
  • 查看数据类型函数type()
print('True的数据类型:', type(True))
print('"abcd"数据类型:', type("abcd"))
print('1数据类型:', type(1))
print('1.1数据类型:', type(1.1))
print('(1,2,3)数据类型:', type((1,2,3)))
print('[1,2,3]数据类型:', type([1,2,3]))
print('{1,2,3}数据类型:', type({1,2,3}))
print('{1:a,2:b,3:c}数据类型:', type({1:'a',2:'b',3:'c'}))
True的数据类型: <class 'bool'>
"abcd"数据类型: <class 'str'>
1数据类型: <class 'int'>
1.1数据类型: <class 'float'>
(1,2,3)数据类型: <class 'tuple'>
[1,2,3]数据类型: <class 'list'>
{1,2,3}数据类型: <class 'set'>
{1:a,2:b,3:c}数据类型: <class 'dict'>
  • 'English','Chinese','Usa'等首字母大写,其余字母小写的单词

    capitalize

x = 'abcdefghigk'
x_1 = x.capitalize()
print(x_1)
Abcdefghigk
  • 字符串居中 center(长度,'默认为空白')
x = 'bright, how are you'
x_1 = x.center(40,'$')
print(x_1)
$$$$$$$$$$bright, how are you$$$$$$$$$$$
  • 全大写:upper 全小写:lower
x1 = 'bright'
x2 = 'BRIGHT'
x1_upper = x1.upper()
print('小写变大写',x1_upper)
x2_lower = x2.lower()
print('大写变小写',x2_lower)
小写变大写 BRIGHT
大写变小写 bright
  • startswith('检测字符'[,start,end])endswith('检测字符'[,start,end])
x = 'bright'
print(x.startswith('b')) # 是否以b开头
print(x.endswith('t')) # 是否以t结尾
print(x.startswith('ri',1,3))
True
True
True
  • 字符串中,大写变小写,小写变大写 swapcase()
x = 'bRIGHT,tHE, hOW'
print(x.swapcase())
Bright,The, How
  • 字符串内词汇首字母大写title
x = 'hai, bright, how#are$you'
print(x.title())
Hai, Bright, How#Are$You
  • index:通过元素找索引,可切片,找不到,报错;find:通过元素找索引,可切片,找不到,返回-1
x = 'bright, how are you'
print('找字符h的下标',x.find('h'))
print('从第五个下标开始,找字符h的下标',x.find('h',6))
print(x.find('@'))
找字符h的下标 4
从第五个下标开始,找字符h的下标 8
-1
  • strip删除前后端的空格,换行符(\n),制表符(\t 即”Tab“键),注意:当遇到不是清除的内容时,就会停下
x = '    \n\nbright \t  \t \n            '
print('原字符串:',x)
print('删除前后空的字符串:',x.strip())
原字符串:     

bright 	  	 

删除前后空的字符串: bright
x = 'xxxbrixghtxxx'
print('原字符串:',x)
print('删除两端的x:',x.strip('x'))
print('删除左端的x:',x.lstrip('x'))
print('删除右端的x:',x.rstrip('x'))
原字符串: xxxbrixghtxxx
删除两端的x: brixght
删除左端的x: brixghtxxx
删除右端的x: xxxbrixght
  • 分割字符串,构成列表;split() str(字符串)---> list(列表)
  • 将列表中的字符串,构成字符串输出:join() list(列表)---> str(字符串)
x = 'I am bright. how are you!'
print(x.split()) # 默认用空格分割
['I', 'am', 'bright.', 'how', 'are', 'you!']
x = '我,是,一个,军人,从,小,接受,锻炼。'
print(x.split(',')) # 采用逗号分割
['我', '是', '一个', '军人', '从', '小', '接受', '锻炼。']
x = 'Thank you, if you, I, will, choose, you.'
print(x.split(',', 2)) # 指定分割符,指定分割数量
['Thank you', ' if you', ' I, will, choose, you.']
x = ['bright']
print(x,type(x))
x_1 = '+'.join(x)
x_1
['bright'] <class 'list'>

'bright'
x = ['I','am','bright','.']
' '.join(x)
'I am bright .'
'$'.join(x)
'I$am$bright$.'
  • 替换 str.replace(被替换词,替换词,替换次数)
x = 'bright, bright, bright is bright'
print('bright的全部替换: ', x.replace('bright', 'sky'))
print('bright的首次替换: ', x.replace('bright', 'sky', 1))
print('bright的两次替换: ', x.replace('bright', 'sky', 2))
print('bright的三次替换: ', x.replace('bright', 'sky', 3))
bright的全部替换:  sky, sky, sky is sky
bright的首次替换: sky, bright, bright is bright
bright的两次替换: sky, sky, bright is bright
bright的三次替换: sky, sky, sky is bright
  • 其它相关方法

    • 计算某些元素出现的个数 .count('搜索元素',起始位,终止位)

    • 判断字符串只由字母组成 .isalpha()

    • 判断字符串只由数字组成 .isdigit()

    • 判断字符串是由字母或数字组成组成的 .isalnum()

Python3基础之基本问题的更多相关文章

  1. python3基础视频教程

    随着目前Python行业的薪资水平越来越高,很多人想加入该行业拿高薪.有没有想通过视频教程入门的同学们?这份Python教程全集等你来学习啦! python3基础视频教程:http://pan.bai ...

  2. Python3基础-特别函数(map filter partial reduces sorted)实例学习

    1. 装饰器 关于Python装饰器的讲解,网上一搜有很多资料,有些资料讲的很详细.因此,我不再详述,我会给出一些连接,帮助理解. 探究functools模块wraps装饰器的用途 案例1 impor ...

  3. 2. Python3 基础入门

    Python3 基础入门 编码 在python3中,默认情况下以UTF-8编码.所有字符串都是 unicode 字符串,当然也可以指定不同编码.体验过2.x版本的编码问题,才知道什么叫难受. # -* ...

  4. python002 Python3 基础语法

    python002 Python3 基础语法 编码默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -* ...

  5. Python3基础(十二) 学习总结·附PDF

    Python是一门强大的解释型.面向对象的高级程序设计语言,它优雅.简单.可移植.易扩展,可用于桌面应用.系统编程.数据库编程.网络编程.web开发.图像处理.人工智能.数学应用.文本处理等等. 在学 ...

  6. Python3基础(八) 模块

    在程序中定义函数可以实现代码重用.但当你的代码逐渐变得庞大时,你可能想要把它分割成几个文件,以便能够更简单地维护.同时,你希望在一个文件中写的代码能够被其他文件所重用,这时我们应该使用模块(modul ...

  7. 【python3基础】python3 神坑笔记

    目录 os 篇 os.listdir(path) 运算符篇 is vs. == 实例 1:判断两个整数相等 实例 2:argparse 传参 实例 3:np.where 命令行参数篇 Referenc ...

  8. Python3基础语法和数据类型

    Python3基础语法 编码 默认情况下,Python3源文件以UTF-8编码,所有字符串都是unicode字符串.当然你也可以为原码文件制定不同的编码: # -*- coding: 编码 -*- 标 ...

  9. Python3基础-目录

    Python3基础-目录(Tips:长期更新Python3目录) 第一章 初识Python3  1.1 Python3基础-前言  1.2 Python3基础-规范 第二章 Python3内置函数&a ...

随机推荐

  1. 【转】linux的特殊符号与正则表达式

    [转]linux的特殊符号与正则表达式 第1章 linux的特殊符号 1.1 通配符 * {} 1.1.1 含义 方便查找文件 通配符是用来找文件名字的. 1.1.2  * 通过find 命令找以 . ...

  2. Python中【__all__】的用法

    Python中[__all__]的用法 转:http://python-china.org/t/725 用 __all__ 暴露接口 Python 可以在模块级别暴露接口: __all__ = [&q ...

  3. ll(ls -l) 列属性

    文件属性 文件数 拥有者 所属的group 文件大小 建档日期 文件名 drwx------ 2 Guest users 1024 Nov 21 21:05 Mail

  4. mysql安装与卸载(非绿色版)

    一.安装和卸载 Mysql安装路径: C:\Program Files\MySQL\MySQL Server 5.5\ Mysql数据文件存放的路径: C:\Documents and Setting ...

  5. 简单解决“ORA-27100: shared memory realm already exists”的问题

    背景 看到这篇文章,算是当初记录过程的一篇了,不像别的,只是有个结果算火.只是感觉到现在可能是碰不见这个问题了,现在哪有32位的oracle啊.可见技术随着岁月的变化,真不知10年后再看今天的问题,可 ...

  6. sklearn学习笔记

    用Bagging优化模型的过程:1.对于要使用的弱模型(比如线性分类器.岭回归),通过交叉验证的方式找到弱模型本身的最好超参数:2.然后用这个带着最好超参数的弱模型去构建强模型:3.对强模型也是通过交 ...

  7. asp.net core 通过ajax上传图片及wangEditor图片上传

    asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端 ...

  8. Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像

    Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像迅雷下载   软件简介 Windows Server 2003 R2标准版是继Windows Serv ...

  9. ural1989 单点更新+字符串hash

    正解是双哈希,不过一次哈希也能解决.. 然后某个数字就对应一个字符串,虽然有些不同串对应同一个数字,但是概率非常小,可以忽略不计.从左到右.从右到左进行两次hash,如果是回文串,那么对应的整数必定存 ...

  10. Arrange an Array to Form a Smallest Digit

    /** * Input an array of positive integers, arrange the integers to form new digits, * and output the ...