问题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. 【PE结构】PIMAGE_FILE_HEADER中TimeDateStamp的时间戳与标准时间转换

    计算PE文件创建时间,需要对时间进行转换,也就是将时间戳转换成特定的格式,或者特定的格式转换成时间戳. pImageFileHeader->TimeDateStamp的值为1487665851 ...

  2. ARMV8 datasheet学习笔记3:AArch64应用级体系结构

    1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...

  3. C语言函数调用栈(二)

    5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数.主调函数必须精确存储这些参数,以便被调函数能够访问到它们.函数通过选择特定的调用约定,来表明其希望以特定方式接收参数.此外, ...

  4. centos6.5环境搭建openvp服务器及windows客户端搭建及配置详解

    1.环境搭建 说明: vpn client 192.168.8.16/24 openvpn server: eth0: 192.168.8.41 eth1: 172.16.1.10 app serve ...

  5. mysql5.6.13通用二进制格式安装并使用amoeba实现对mysql5.6数据库读写分离

    proxy 192.168.8.39 master 192.168.8.40 slave 192.168.8.20 一.安装mysql-5.6.13服务器 安装包: mysql-5.6.13-linu ...

  6. 使用第三方工具Xtrabackup进行MySQL备份

    使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...

  7. 随机森林学习-sklearn

    随机森林的Python实现 (RandomForestClassifier) # -*- coding: utf- -*- """ RandomForestClassif ...

  8. iOS 中的Certificate,Provisioning Profile 的一些注意 (不断完善中)

    注册apple id 有1年多了,这些概念还是模模糊糊的,决定在这里总结一下. 请参阅官方文档 App Distribution Guide code singing的作用如下: Code signi ...

  9. 随机生成三个数(break用法)

  10. LeetCode(30):与所有单词相关联的字串

    Hard! 题目描述: 给定一个字符串 s 和一些长度相同的单词 words.在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置. 注意子串要与 words 中的单词完全匹配,中间不能 ...