python基础运用例子

news2024/10/6 8:31:41

python基础运用例子

    • 1、⼀⾏代码交换 a , b :`a, b = b, a`
    • 2、⼀⾏代码反转列表 l[::-1]
    • 3、合并两个字典 res = {**dict1, **dict2}
      • **操作符
      • 合并两个字典
        • for循环合并
        • dict(a, **b) 的方式
        • dict(a.items() + b.items()) 的方式
        • dict.update(other_dict) 的方式
    • 4、⼀⾏代码列表去重set([1,1,1])
    • ⼀⾏代码求多个列表中的最⼤值
      • max
    • ⼀⾏代码⽣成逆序序列
  • python内置函数
    • all()函数 all([1, 0, 3, 6])
    • any()函数
    • bool函数
  • 面向对象
    • 构造方法 def __init__(self, name)
    • "__成员名"定义私有成员
    • 内部私有成员的调用 同Java、C++通过公有成员函数调用
    • 创建对象 构造函数两个以上参数,不指明参数就要按顺序,想不按顺序就可以声明参数
    • str()函数和repr() 函数
      • str()函数
      • repr() 函数
      • __repr
  • 格式化字符串
    • %-- 'Hello %s' % 'Python'
    • format()-- '{0} {1}'.format('Hello', 'Python')
    • f-string-- f'User {username} has logged in and did an action {action}.'

1、⼀⾏代码交换 a , b :a, b = b, a

a = 1
b = 2
a, b = b, a
print(a, b)  # 2 1

2、⼀⾏代码反转列表 l[::-1]

l=[1,2,3]
print(l[::-1] ) # [3,2,1]

3、合并两个字典 res = {**dict1, **dict2}

# {**{'a':1,'b':2}, **{'c':3}}
d1={'a':1,'b':2}
d2={'c':3}
print({**d1,**d2})

# {'a': 1, 'b': 2, 'c': 3}

**操作符

函数形参汇聚 —— 打包
*args 和 **kwargs 常作为 魔法变量 出现于函数定义中,用于将不定量实参传递给函数。其中:

*args 的本质是将 位置形参 汇集为 tuple 然后由变量 args 接收,:

>>> def test1(x, *args):
    ''' 将除首个元素 x 外的位置参数 args 汇聚为一个 tuple '''
	print(x, args) 
 
>>> test1('a', 'b', 'c', 'd')
'a' ('b', 'c', 'd')
 
>>> test1(1, 2, 3, 4)
1 (2, 3, 4)

**kwargs 的本质则是将 关键字形参 汇集为 dict 然后由变量 kwargs 接收:

>>> def test2(**kwargs):
    ''' 将所有关键字参数汇聚为 dict ''' 
	for key, value in kwargs.items():
		print("{0} = {1}".format(key, value))
 
>>> test2(a=1, b=2, c=3, d=4)
a = 1
b = 2
c = 3
d = 4

注意,单星操作符 * 无法汇集关键字参数,双星操作符 ** 才可以

合并两个字典

for循环合并

a = {1: 'a', 2: 'aa'}
b = {3: 'aaa', 4: 'aaaa'}
for k, v in b.items():
    a[k] = v
    # print(k)

print(a)
# {1: 'a', 2: 'aa', 3: 'aaa', 4: 'aaaa'}

dict(a, **b) 的方式

d1={'a':1,'b':2}
d2={'c':3}
print(dict(d1,**d2))

dict(a.items() + b.items()) 的方式

dict.items() 能够得到一个包含以该字典的键与值为元素组成的元组的列表:

>>> a = {1: 'a', 2: 'aa'}
>>> a.items()
[(1, 'a'), (2, 'aa')]

两个列表实现 + 运算, 即是将两个列表合并, 而 dict() 方法可以接收类似于上面例子中的数据结构来组装并返回一个字典类型的数据, 所以我们可以使用 dict(a.items() + b.items()) 的方法来合并 a、 b 两个字典:

>>> a = {1: 'a', 2: 'aa'}
>>> b = {3: 'aaa', 4: 'aaaa'}
>>> dict(a.items() + b.items())
{1: 'a', 2: 'aa', 3: 'aaa', 4: 'aaaa'}

dict.update(other_dict) 的方式

直接调用字典的 update() 方法, 同样可以将两个字典合并:

>>> a = {1: 'a', 2: 'aa'}
>>> b = {3: 'aaa', 4: 'aaaa'}
>>> a.update(b)
>>> a
{1: 'a', 2: 'aa', 3: 'aaa', 4: 'aaaa'}

4、⼀⾏代码列表去重set([1,1,1])

set([1,2,2,3,3,3]) 
# {1, 2, 3}

⼀⾏代码求多个列表中的最⼤值

a=max(max([ [1,2,3], [5,1], [4] ], key=lambda v: max(v)))
print(a)
# 5

解释:比较列表大小的规则是 根据 每个列表中最大值
传入命名参数key,其为一个函数,用来指定取最大值的方法

max

max函数的作用是返回可迭代序列中的最大项或两个或多个参数中的最大项
多个参数中的最大项

print(max(1,2,3,4))  # 输出4

注意:函数至少传入两个参数,但是有只传入一个参数的例外,此时参数必须为可迭代对象,返回的是可迭代对象中的最大元素。
可迭代对象,如s = '12345'[1,2,3,4,5]

s = '12345'
 
print(max(s))
  1. 以默认的比较方式直接获得最大项
# 求序列最大值
>>> max([1,2,3,4,5])
5
  1. 指定比较方式func获取最大值
# 元组之间的比较默认是从左到右比较
>>> max([(1, '5'), (2, '4'), (3, '3'), (4, '2'), (5, '1')])
(5, '1')
# 我自定义的比较方式是比较第二个键值的大小
>>> max([(1, '5'), (2, '4'), (3, '3'), (4, '2'), (5, '1')], key=lambda x: x[1])
(1, '5')
s = [

    {'name': 'sumcet', 'age': 18},

    {'name': 'bbu', 'age': 11}

]
a = max(s, key=lambda x: x['age'])
print(a)
# {'name': 'sumcet', 'age': 18}

# 输出
# {'name': 'sumcet', 'age': 18}

⼀⾏代码⽣成逆序序列

list(range(10,-1,-1))
#输出结果为:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

python内置函数

all()函数 all([1, 0, 3, 6])

接受⼀个迭代器,如果迭代器的 所有元素 都为真,那么返回 True,否则返回 False
python内置函数all可用于判断传入的可迭代参数 iterable 中的所有元素是否都为True,如果是则返回True,反之返回False。如果可迭代对象是空的,也会返回True

res = all([1, 0, 3, 6])
print(res)
# false
res = all([1,2,3])
print(res)
# true
print(all([True, 4, 7]))  # True
print(all((True, False)))  # False, 因为有一个元素不是True
 
print(all([]))  # True

any()函数

接受⼀个迭代器,如果迭代器⾥ ⾄少有⼀个 元素为真,那么返回 True,否则返回 False

print(any([0,0,0,[]]))
# false
print(any([0,0,1]))
# true

bool函数

  • 参数如果缺省,则返回False
  • 传入布尔类型,按原值返回
  • 传入字符串,空字符串返回False,否则返回True
  • 传入数值时,0值返回False,否则返回True
  • 传入元组,列表,字典等对象时,元素个数为空返回False, 否则返回True
  • Tips:
    字符串的’0’,是字符串,但不是空字符串,因此返回bool(‘0’)返回True
>>>bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True
>>> issubclass(bool, int)  # bool 是 int 子类
True
print(bool([0,0,0]))
# Out[1]:True
print(bool([]))
# Out[2]: False
print(bool([1,0,1]))
# Out[3]: True

面向对象

构造方法 def init(self, name)

构造方法 init() 会在类实例化时自动调用。无论构造方法还是其他方法都需要将 self 作为第一个参数,它代表类的实例。

class Cat:
	# 属性
    color = 'black'
    # 构造方法
    def __init__(self, name):
        self.name = name
    # 自定义方法
    def eat(self, food):
        self.food = food
        print(self.name, '正在吃'+food)

"__成员名"定义私有成员

面 Cat 类中定义的属性和方法都是公开的,除此之外我们还可以定义私有属性和方法,声明方式为:在属性名或方法名前加两条下划线,示例如下所示:

class Cat:
    __cid = '1'
    def __run(self):
        pass

需要强调一点是:外部不能访问私有属性和调用私有方法,自然 Cat.__cid 是会报错的。

内部私有成员的调用 同Java、C++通过公有成员函数调用


class Cat:
    __cid = '1'
    def __run(self, speed):
        print('__cid是'+self.__cid+'的猫', '以'+speed+'的速度奔跑')
    def run(self, speed):
        self.__run(speed)

c.run('50迈')

创建对象 构造函数两个以上参数,不指明参数就要按顺序,想不按顺序就可以声明参数

 # 创建对象
c = Cat('Tom')

class Student():
    def __init__(self, id, name):
        self.id = id
        self.name = name

   
# xiaoming = Student(id='001', name='xiaoming')
xiaoming = Student('001', 'xiaoming')
xiaoming = Student(name='xiaoming', id='002')

str()函数和repr() 函数

class Student():
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def __repr__(self):
        return 'id = ' + self.id + ', name = ' + self.name
# xiaoming = Student(id='001', name='xiaoming')
xiaoming = Student('001', 'xiaoming')
xiaoming = Student(name='xiaoming', id='002')
print(xiaoming)
# id = 001, name = xiaoming
ascii(xiaoming)
# 'id = 001, name = xiaoming'

str()函数

str() 函数将对象转化为适于人阅读的形式。

s = 'RUNOOB'
print(str(s))
# 'RUNOOB'
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
print(str(dict))
# "{'google': 'google.com', 'runoob': 'runoob.com'}"

在这里插入图片描述

repr() 函数

repr() 函数将对象转化为供解释器读取的形式

s = 'RUNOOB'
print(repr(s))
# "'RUNOOB'"
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
print( repr(dict))
# "{'google': 'google.com', 'runoob': 'runoob.com'}"

在这里插入图片描述
repr() 方法可以将读取到的格式字符,比如换行符、制表符,转化为其相应的转义字符。

# coding=UTF-8

s="物品\t单价\t数量\n包子\t1\t2"
print(s)
print(repr(s))

在这里插入图片描述
一个面向用户一个面向机器
repr(str) 输出字符串会加上引号''

str = '3.14'
print('原型:', str, '类型:', type(str), '长度:',len(str))

# repr()转换
repr1= repr(str)
print('repr()转换:', repr1, '类型:',  type(repr1),'长度:', len(repr1))
# str()转换
s = '3.14' #使用str()函数要注意字符串不要占用变量名str,否则报错
str1 = str(s)
print('str()转换:', str1, '类型:',  type(str1),'长度:', len(str1))

在这里插入图片描述

在这里插入图片描述

print(str(3.14))
print(str('3.14'))
print(repr(3.14))
print(repr('3.14'))

在这里插入图片描述

输出字典的效果一致

__repr

class A(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f'name:{self.name},age:{self.age}'


my_list = [A('张三', 8), A('李四', 9)]
print(my_list)

在这里插入图片描述

class A(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'name:{self.name},age:{self.age}'


my_list = [A('张三', 8), A('李四', 9)]
print(my_list)

在这里插入图片描述

运行可以发现,有没有__str__函数输出结果一致,
通过简单的对⽐,我们发现,直接输出对象,调⽤的__repr__ ⽅法。
另外还需要注意的是,如果将对象放在容器中进⾏输出,调⽤的是__repr__ ⽅法。

总结
Python 中的 str 和 repr ⽅法都是⽤来显示的,即描述对象信息的。
如果重写__str__ ⽅法,也重写了 repr ⽅法时,则默认调⽤ __repr__⽅法。

原文链接:https://blog.csdn.net/qq_41564918/article/details/109014354

格式化字符串

%-- ‘Hello %s’ % ‘Python’

当我们需要输出的内容中含有变量时,比如:Hello xxx,xxx 为变量,此时便需要一种格式化字符串的方式,Python 使用 % 格式化字符串,常用占位符如下表所示:

占位符 描述
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数
以字符串为例,如下所示:

print('Hello %s' % 'Python')

输出结果:

Hello Python

format()-- ‘{0} {1}’.format(‘Hello’, ‘Python’)

我们也可以使用字符串的 format() 方法进行格式化,先看下示例:

print('{0} {1}'.format('Hello', 'Python'))

这种方式是

用传入的参数依次替换字符串内的占位符{0}{1} ...

f-string-- f’User {username} has logged in and did an action {action}.’

f-string 除了提供强大的格式化功能之外,还是这三种格式化方式中性能最高的实现。

# %s
username = 'tom'
action = 'payment'
message = 'User %s has logged in and did an action %s.' % (username, action)
print(message)

# format
username = 'tom'
action = 'payment'
message = 'User {} has logged in and did an action {}.'.format(username, action)
print(message)

# f-string
username = 'tom'
action = 'payment'
message = f'User {username} has logged in and did an action {action}.'
print(message)

print(f"{2 * 3}")
# 6

comedian = {'name': 'Tom', 'age': 20}
print(f"The comedian is {comedian['name']}, aged {comedian['age']}.")
# The comedian is Tom, aged 20.

相比于常见的字符串格式符 %s 或 format 方法,f-strings 直接在占位符中插入变量显得更加方便,也更好理解。
方便的转换器

f-string 是当前最佳的拼接字符串的形式,拥有更强大的功能,我们再来看一下 f-string 的结构。

f ’ < text> { < expression> <optional !s, !r, or !a> } < text> … ’

其中 ‘!s’ 调用表达式上的 str(),‘!r’ 调用表达式上的 repr(),‘!a’ 调用表达式上的 ascii().

默认情况下,f-string 将使用 str(),但如果包含转换标志 !r,则可以使用 repr()
没有很懂 !r 这些转化标志 ,但f-string 应该是可以把数字转化为字符串,为什么呢

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'str - name: {self.name}, age: {self.age}'

    def __repr__(self):
        return f'repr - name: {self.name}, age: {self.age}'

p = Person('tom', 20)
print(f'{p}')
# str - name: tom, age: 20

print(f'{p!r}')
# repr - name: tom, age: 20
# 转换标志 !a
a = 'a string'
print(f'{a!a}')
# "'a string'"
# 等价于
print(f'{repr(a)}')
# "'a string'"
class Student():
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def __repr__(self):
        return 'id = ' + self.id + ', name = ' + self.name
# xiaoming = Student(id='001', name='xiaoming')
xiaoming = Student('001', 'xiaoming')
xiaoming = Student(name='xiaoming', id='002')
print(xiaoming)
class A(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f'name:{self.name},age:{self.age}'
    # def __repr__(self):
    #     return 'name = ' + self.name + ', age = ' + self.age

my_list = A('张三', 8)
print(my_list)
my_list = [A('张三', 8), A('李四', 9)]
print(my_list)

在这里插入图片描述

	def __repr__(self):
        return f'name:{self.name},age:{self.age}'
    # def __repr__(self):
    #     return 'name = ' + self.name + ', age = ' + self.age

用下面这种输出字符串,只能接收字符串拼接,即需要输出的参数都是字符串类型,否则报错,
但用上面这种,f-string大概是可以将int类型转化位字符串类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Pyspider进行API接口抓取和数据采集

API接口是一种常见的数据获取方式&#xff0c;它可以提供文本格式的数据&#xff0c;并且具有高度的实时性和可靠性。而Pyspider是一个基于Python的强大的网络爬虫框架&#xff0c;它提供了丰富的功能和灵活的扩展性&#xff0c;使我们可以轻松地进行数据的抓取和处理。在我们的…

深度学习环境搭建笔记(二):mmdetection-CPU安装和训练

文章目录 第一步&#xff1a;安装anaconda第二步&#xff1a;安装虚拟环境第三步&#xff1a;安装torch和torchvision第四步: 安装mmcv-full第五步: 安装mmdetection第六步&#xff1a;测试环境第七步&#xff1a;训练-目标检测7.1 准备数据集7.2 检查数据集7.3 训练网络 第一步…

数据库-多表查询

概述&#xff1a; 介绍&#xff1a;多表查询&#xff1a;指从多张表中查询数据 笛卡儿积&#xff1a;笛卡儿积是指在数学中&#xff0c;两个集合&#xff08;A集合和B集合&#xff09;的所有组合情况&#xff08;在多表查询时&#xff0c;需要消除无效的笛卡儿积&#xff09; 分…

7. read_excel()函数读取Excel文件

【目录】 文章目录 1. pandas库读取数据2. read_excel()函数读取Excel文件3. 准备工作4. 路径前的r是什么5. io参数 绝对路径6. io 相对路径7. sheet_name&#xff1a;要读取的sheet的名称或索引7.1 sheet_name参数 名字7.2 sheet_name参数 顺序 8. index_col参数指定行索引…

[译]这8个CSS小技巧,你知道吗?

前言 在网页设计和前端开发中&#xff0c;CSS属性是非常重要的一部分。掌握常用的CSS属性不仅可以使你的网页看起来更美观&#xff0c;还能提升用户体验&#xff0c;今天小编为大家介绍8个常见的CSS小技巧&#xff1a; 1.修改滚动条样式 下图是我们常见的滚动条&#xff0c;…

开发前期准备工作

开发前期准备工作 文章目录 开发前期准备工作0 代码规范0.1 强制0.2 推荐0.3 参考dao&#xff1a;跟数据库打交道service&#xff1a;业务层&#xff0c;人类思维解决controller&#xff1a;抽象化 0.4 注释规范0.5 日志规范0.6 专有名词0.7 控制层统一异常统一结构体控制层提示…

2023年8月CSDN客服月报|解决个3重大问题和8个次要问题,处理个用户需求及建议

听用户心声&#xff0c;解用户之需。hello&#xff0c;大家好&#xff0c;这里是《CSDN客诉报告》第23期&#xff0c;接下来就请大家一同回顾我们8月份解决的bug&#xff5e; 一、重大问题 1、【主站】博客访问异常 反馈量&#xff1a;102 持续时间&#xff1a;7月31日15:4…

Xcode,swift:Error Domain=kCLErrorDomain Code=1 (null)问题解决

问题描述: iOS开发时,当使用用户的位置权限时,获取用户经纬度报错:Error DomainkCLErrorDomain Code1 "(null)",错误域kCLError域代码1“(null)” 解决方法: 打开模拟机的设置-通用-语言与地区 将地区设置为中国(如果你的开发位置在中国的话) 点击左上方Features,选择…

leetCode动态规划“不同路径II”

迷宫问题是比较经典的算法问题&#xff0c;一般可以用动态规划、回溯等方法进行解题&#xff0c;这道题目是我昨晚不同路径这道题趁热打铁继续做的&#xff0c;思路与原题差不多&#xff0c;只是有需要注意细节的地方&#xff0c;那么话不多说&#xff0c;直接上coding和解析&a…

[Linux]编写一个极简版的shell(版本1)

[Linux]编写一个极简版的shell-version1 文章目录 [Linux]编写一个极简版的shell-version1命令行提示符打印接收命令行参数将命令行参数进行解释执行用户命令完整代码 本文能够帮助Linux系统学习者通过代码的角度更好地理解命令行解释器的实现原理。 命令行提示符打印 Linux操…

将两个文件夹中重复的图象删除

将两个文件夹中重复的图象删除 需求分析解决方案 需求分析 文件夹one和two存在图象的重复&#xff0c;将two文件中中重复的文件夹删除 解决方案 # coding: utf-8 from PIL import Image, ImageDraw, ImageFont import os import shutil import cv2 as cv import numpy as np …

二分搜索树节点的插入(Java 实例代码)

目录 二分搜索树节点的插入 Java 实例代码 src/runoob/binary/BinarySearchTreeInsert.java 文件代码&#xff1a; 二分搜索树节点的插入 首先定义一个二分搜索树&#xff0c;Java 代码表示如下: public class BST<Key extends Comparable<Key>, Value> { …

第 3 章 栈和队列(链栈)

1. 背景说明 链栈是指用单链表实现的栈&#xff0c;其存储结构为链式存储&#xff0c;实现类似于队列的链式实现&#xff0c;不过在插入元素时链栈在头部插入&#xff0c;而 链式队列在尾部插入&#xff0c;本示例中实现为带头结点的链栈&#xff0c;即栈顶元素为栈指针的下一…

Qcon2023: 大模型时代的技术人成长(简)

我目前致力于操作系统相关的研发&#xff0c; 公司的目标是打造物联网时代的智能原生操作系统。如何实现操作系统的AI Native 呢&#xff1f;带着这样的疑问我参加了Qcon2023 北京站的大会。 与Qcon 2022 北京站不同的是&#xff0c; 身份变了&#xff0c; 上次是分享者&#x…

【校招VIP】前端JavaScript语言之跨域

考点介绍&#xff1a; 什么是跨域&#xff1f;浏览器从一个域名的网页去请求另一个域名的资源时&#xff0c;域名、端口、协议任一不同&#xff0c;都是跨域。跨域是前端校招的一个重要考点&#xff0c;在面试过程中经常遇到&#xff0c;需要着重掌握。本期分享的前端算法考点之…

电商API对接流程,简单讲解!

电商API接口对接流程一般包括以下几个步骤&#xff1a; 1. 确定需求&#xff1a;首先确定您的电商平台需要与哪些其他系统或服务进行对接&#xff0c;以及需要传递哪些数据。 2. 寻找合适的API&#xff1a;根据您的需求&#xff0c;在开放平台或者第三方API市场中选择适合的API…

文件上传漏洞学习小结

目录 一、漏洞简介 二、上传的原理或本质 2.1 文件上传的本质 2.2 文件上传的过程及代码演示 三、文件上传常见触发点 四、文件上传常见检测方式 4.1 前端js检测 4.2 content-type &#xff08;MIME&#xff09;检测 4.3 黑名单检测 4.4 文件头检测 4.5 .htaccess文件…

软件评测师之数的表示

目录 一、数的进制(1)十进制&#xff1a;D(2)二进制&#xff1a;B(3)十六进制&#xff1a;H(4)八进制&#xff1a;O/Q 二、其他进制转十进制(1)二进制转十进制(2)十六进制转十进制(3)八进制转十进制 三、二进制与十六进制/八进制进行转换四、考法 一、数的进制 (1)十进制&…

微波系统中散射参量S、阻抗参量Z及导纳参量Y之间的关系及MATLAB验证

微波系统中散射参量S、阻抗参量Z及导纳参量Y之间的关系及MATLAB验证 用HFSS设计了一微波元件&#xff0c;仿真出了其散射参量S、阻抗参量Z及导纳参量Y&#xff0c;用MATLAB验证他们之间的关系 HFSS设计螺旋线圈 用HFSS设计了一个螺旋线圈&#xff0c;如上图所示。 进行仿真&…

无涯教程-JavaScript - DAYS360函数

描述 DAYS360函数返回基于360天的年份(十二个月为30天)的两个日期之间的天数,该天数用于会计计算。 语法 DAYS360 (start_date,end_date,[method])争论 Argument描述Required/OptionalStart_dateThe two dates between which you want to know the number of days.Required…