【一日速成编程系列】几行代码学会Python

用简单的代码案例学会某一门语言【Python】

事例1 拿下它!列表和元组相关

在这里插入图片描述
发现没有,这个关键的地方在于my_list发生了改变,在解释为何my_list在运行之后发生了改变之前,我们先要了解Python中列表(list)和变量引用的基本概念。

列表(List)和变量引用

在Python中,列表是可变的数据类型,意味着你可以修改列表中的元素。当你将一个列表赋值给另一个变量时,你实际上是在创建一个新的变量,但它引用的是同一个列表对象。

代码分析

  1. 初始化列表和元组

    my_list = [4, 7, 'abc']
    my_tuple = (9, 22, 'efg')
    

    这里,my_list 是一个包含三个元素的列表,而 my_tuple 是一个包含三个元素的元组。

  2. 打印初始状态

    print('my_list = ', my_list)
    print('my_tuple = ', my_tuple)
    

    这里简单打印出my_listmy_tuple的初始值。

  3. 合并列表

    my_list2 = my_list + [66, 77]
    

    这里,通过+操作符,my_list[66, 77]被合并成了一个新的列表,并赋值给my_list2。重要的是,my_list2是一个全新的列表对象,它与my_list是两个不同的对象。

  4. 修改列表

    my_list3 = my_list
    my_list3[1] = 'a new element'
    
    • my_list3 = my_list:这里,my_list3并没有创建一个新的列表对象,而是成为了my_list的另一个引用,即它们现在指向同一个列表对象。
    • my_list3[1] = 'a new element':由于my_list3my_list指向同一个列表对象,修改my_list3中的元素也会反映到my_list上。
  5. 打印修改后的状态

    print('my_list = ', my_list)
    print('my_list2 = ', my_list2)
    print('my_list3 = ', my_list3)
    
    • my_listmy_list3显示的是同一个列表,因为my_list3my_list的引用,并且这个列表的第二个元素已经被修改为'a new element'
    • my_list2仍然显示其初始的合并后的列表,因为它是一个与my_listmy_list3不同的列表对象。

结论

my_list在运行之后发生了改变,是因为my_list3是对my_list的引用,而不是对my_list的一个独立拷贝。因此,通过my_list3对列表所做的任何修改都会影响到原始的my_list对象。要创建一个my_list的独立拷贝,可以使用列表的拷贝方法,如my_list3 = my_list.copy()my_list3 = list(my_list)。如下所示:
在这里插入图片描述
接下来我们再看下一个事例:
在这里插入图片描述

关于if 和for

先看一个事例:
在这里插入图片描述
上面这个事例中可以看到使用if在取余符号下的使用规则。下面这个事例是关于for,仔细看代码,你是否预估正确?
在这里插入图片描述
在上面的代码中,整个流程是这样的:

s=0,n=0,s=0,n=0[output,without break loop];
n=1,s=0+1=1,n=1[output,without break loop];
n=2,s=1+2=3,n=2[output,without break loop];
n=3,s=3+3=6,n=3[output, break loop],s=6[output]

具体查看列表信息,则是通过下面的代码:
在这里插入图片描述
下面是用列表推导式赋予一个列表中具体的变量值:
在这里插入图片描述
上面的方括号内的元素,均为(0,1,2,3,4,…,10)的平方

字典的使用

在这里插入图片描述
字典的遍历逐项元素是用的是items属性,可以逐项遍历到每一个字典的元素。
下面再看具体的方法:
在这里插入图片描述
具体的factorial(4)方法执行流程如下:

1. n=4 as input, jump over if sentence, ret=1, x=1,ret=1*1;
2. still in for loop: x=2,ret=1*2=2;
3. still in for loop: x=3,ret=2*3=6;
4. still in for loop: x=4,ret=6*4=24;
5.Not in for loop, because x=5,break loop, return ret=24;

对于另外一个12!,这个同样是这个流程。

字符串的操作,重中之重!!!

下面的案例让你彻底理解字符串的操作,这里举例一个关于字符串的替换的功能,输入为input_str,pattern为即将要进行替换操作的内容(处理前),replace是替换后的显示的内容(处理后),下面看:
在这里插入图片描述
可以看到在具体的函数中,传参顺序不会影响具体的输出,只要传入的参数的名字有对应,就算没有按照函数定义的顺序来,依然可以进行有效正确的输出。

类class(拿下它!!!)

class Element:  
    def __init__(self, symbol, number):  
        self.symbol = symbol  
        self.number = number  
      
    def print_info(self):  
        print('Symbol: {} ,  Atomic Number: {}'.format(self.symbol, self.number))  
  
class Metal(Element):  
    def __init__(self, symbol, number, is_shiny):  
        super().__init__(symbol, number)  
        self.is_shiny = is_shiny  
  
gold = Metal('Au', number=79, is_shiny=True)  
gold.print_info()  
print('Gold {} shiny'.format('is' if gold.is_shiny else 'is not'))

这段代码定义了两个类:Element 和 Metal,并通过继承的方式将 Metal 类构建为 Element 类的子类。接下来,我将逐步分析这段代码的功能和潜在的问题。

Element 类
目的:这个类用于表示一个元素,具有两个属性:symbol(元素的符号)和 number(元素的原子序数)。
方法:
init(self, symbol, number):构造函数,用于初始化元素对象的 symbol 和 number 属性。
print_info(self):一个实例方法,用于打印元素的符号和原子序数。
Metal 类
目的:这个类继承自 Element 类,用于表示金属元素,并添加了一个额外的属性 is_shiny 来表示金属是否闪亮。
方法:
init(self, symbol, number, is_shiny):构造函数,首先通过 super().init(symbol, number) 调用父类 Element 的构造函数来初始化 symbol 和 number 属性,然后初始化 is_shiny 属性。
代码执行流程
创建一个 Metal 类的实例 gold,指定其符号为 ‘Au’,原子序数为 79,并设置 is_shiny 为 True。
调用 gold.print_info() 方法,该方法继承自 Element 类,打印出 gold 的符号和原子序数。由于 print_info 方法没有修改,它将打印出 ‘Au’ 和 79。
使用条件表达式和 format 方法打印出 gold 是否闪亮的信息。由于 gold.is_shiny 被设置为 True,所以将打印出 ‘Gold is shiny’。

随机的使用案例(绝招也!)

我们继续使用上面用到的my_list,下面是事例:
在这里插入图片描述
上面是一个tuple和list的相互转换,下面是unpacking tuple的操作。这个在实际代码中经常用到。

学会并且掌握上面操作,将可以应对绝大数python编写场景!当然,这个单纯是python,建议学习一日速成系列的pytorch、opencv以及后续的代码操作,将会事半功倍!!!!!!!!!!!

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值