问题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. 【转载】apache log配置 按日期写日志

    指定apache日志每天生成一个文件 Linux系统配置方法 在apache的配置文件httpd.conf中找到 代码如下1 ErrorLog logs/error_log CustomLog log ...

  2. freeRTOS中文实用教程3--中断管理之计数信号量

    1.前言 在中断不频繁的系统中,使用二值信号量没有问题,但是中断频繁发生时,则会有中断丢失的问题. 因为中断发生时延迟任务执行,延迟任务执行的过程中,如果又来了两次中断,则只会处理第一次,第二次将会丢 ...

  3. 安装jdk的时候为什么会有两个jre文件

    有些东西,你懂不懂其实并不太影响你干活,但有些人就是有疑惑就非得弄懂,不然浑身难受,我大概就是这种德性的.昨天安装javaSE的时候,看到jdk中有个jre文件夹,而根目录下又有个jre文件夹,非常困 ...

  4. 编译安装lamp环境

    httpd 2.4.9 + mysql-5.5.33 + php-5.4.29编译安装过程: 准备好以下安装包: mysql-5.5.33-linux2.6-x86_64.tar.gz apr-uti ...

  5. centos 编译安装PHP5.4

    2013年12月29日 19:52:30 已经安装好Apache 2.4 php版本 5.4 ./configure --prefix=/usr/local/lamp/php --with-apxs2 ...

  6. PYTHON-UDP

    1.TCP 和 UDP 发送数据时的流程 ***** 解释 为何TCP是可靠的 是因为发送数据后必须收到确认包 2. UDP的模板代码 ***** 1.UDP协议: (数据报协议) 特点: 无连接 优 ...

  7. PYTHON-TCP 粘包

    1.TCP的模板代码 收发消息的循环 通讯循环 不断的连接客户端循环 连接循环 判断 用于判断客户端异常退出(抛异常)或close(死循环) 半连接池backlog listen(5) 占用的是内存空 ...

  8. GO-time.after 用法

    初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下: 首先是time包里的定义 // After waits for the dur ...

  9. Java7编程高级进阶学习笔记

    本书PDF 下载地址: http://pan.baidu.com/s/1c141KGS 密码:v6i1 注:本文有空会跟新: 讲述的是jdk7的内容: 注关于java 更详细的内容请进入:<Ja ...

  10. C++11 AUTO 类型实践

    auto在C++11中引入,为大家带来方便. 具体使用及注意事项参考: https://blog.csdn.net/xiaoquantouer/article/details/51647865 htt ...