问题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. Python3学习笔记19-继承和多态

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承, 新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Sup ...

  2. Android手势滑动Tab

    Android手势滑动Tab //MainActivity.java public class MainActivity extends TabActivity { ; ; ; private Ges ...

  3. java比较两个对象是否相等?

    1.判断两个对象是否是同一个引用对象则用==,"=="比的是地址.因为如果地址相同,则就是同一个对象(java中如果两对象(obj1,obj2)相等,那么在修改obj2的时候,ob ...

  4. 转:vue+element实现树形组件

    项目中需要用到树形组件,在网上发现一个用vue+element实现的树形组件,现在记录下: demo地址:https://github.com/wilsonIs/vue-treeSelect

  5. oracle 各个版本下载地址

    Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP http://downl ...

  6. 使用JSONP实现跨域通信

    引语 Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.由于受到浏览器的限制,该方法不允许 ...

  7. python 全栈开发,Day54(jQuery的属性操作,使用jQuery操作input的value值,jQuery的文档操作)

    昨日内容回顾 jQuery 宗旨:write less do more 就是js的库,它是javascript的基础上封装的一个框架 在前端中,一个js文件就是一个模块 一.用法: 1.引入包 2.入 ...

  8. 配置CenOS网络,并用Xshell链接。

    首先输入 cd /etc/sysconf ig/network-scripts/ 然后回车 输入ls 然后回车 输入 vi ifcfg-eth0  然后回车 按下esc键,然先后按下U,I键把光标用键 ...

  9. MyEclipse10中启动出现OutOfMemoryError: PermGen space如何解决

    一篇关于技术的文档,分享给大家.在MyEclipse中启动程序运行,报错java.lang.OutOfMemoryError: PermGen space应该怎么办?这是eclipse 内存不够的原因 ...

  10. Django的auto_now=True没有自动更新

    auto_now=True自动更新,有一个条件,就是要通过django的model层. 如create或是save方法. 如果是filter之后update方法,则直接调用的是sql,不会通过mode ...