Python基础笔记

4. 列表

列表非常适合于存储程序运行期间可能变化的数据集。

遍历列表

nums = ["alice","david","carolina"]
for iter in nums:
    print(iter)

创建数值列表

1、简单使用range() 函数

for value in range(1, 5);
	print(value)

2、使用range() 创建数字列表

numbers = list(range(1, 6)) #使用list()将range()的结果直接转换为列表
print(numbers)

3、range() 指定步长

even_numbers = list(range(2, 11, 2))
print(even_numbers)
---------------------------
[2, 4, 6, 8, 10]

4、对数字列表的简单计算

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(f"min(digits) = {min(digits)}\n")
print(f"max(digits) = {max(digits)}\n")
print(f"sum(digits) = {sum(digits)}\n")

5、列表解析

将for循环和创建新元素的代码合并成一行,并自动附加新元素

squares = [value ** 2 for value in range(1, 11)] #每取出一个元素,都会进行平方的操作
print(squares)

使用部分列表

1、切片,创建切片可指定要使用的第一个元素和最后一个元素的索引

players = ["charles", "martina", "michael", "florence", "eli"]

print(players[0:3]) #遵守左闭右开[?,?),不取右值
print(players[:4])	#若没有指定第一个索引,将自动从列表开头开始
print(players[:4])	#若没有指定第二个索引,则切片终止于列表末尾
print(players[-3:]) #输出倒数后3个元素

2、遍历切片,使用for循环

for iter in players[:3]:
    print(iter.title())

3、复制列表

复制列表可创建一个包含整个列表的切片,同时省略起始索引和终止索引。注意这里不是将副本进行赋值,二者是指向同一个列表。

players = ["charles", "martina", "michael", "florence", "eli"]
player1 = players[:]

5. 元组

python将不能修改的值称为不可变的,而不可变的列表被称为元组。

定义元组

元组使用圆括号来标识。定义元组后,可使用索引来访问元组元素。

dimensions = (200, 50)
print(dimensions)

#TypeError: "tuple" object does not support item assignment(禁止修改元组)

严格来说,元组是由逗号标识的,圆括号只是让元组看起来更整洁清晰。如果要定义只包含一个元素的元组,必须在这个元素后面加上逗号。

my_t = (3,)

遍历元组

dimensions = (200, 50)
for iter in dimensions:
    print(iter)

修改元组变量

虽然不能修改元组的元素,但是可以给存储元组的变量赋值。如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。

dimensions = (200, 50)
dimensions = (400, 100)

6. 字典

字典是一系列键值对。每个键都与一个值相关联。可以使用键来访问相关联的值。字典用在花括号 ({ }) 中的一系列键值对表示。

alien = {"color":"green", "points":5}

print(alien["color"]) #访问字典中的值

添加键值对,可依次指定字典名、用方括号括起来的键和相关联的值。

alien["x_position"] = 0   #添加键值对
alien["y_position"] = 25  #添加键值对

alien_0 = {} #空字典
del alien_0["point"]  #删除键值对,彻底删除

为避免在访问时指定的键不存在的问题,可使用get方法,返回一个默认值。

point_value = alien.get("points","No point value assigned.")

1、遍历所有键值对

for key, value in user_0.items(): #items() 返回的是一个键值对列表
    print(f"\nKey:{key}")
    print(f"Value:{value}")

2、遍历字典中的所有键

for name in language.keys(): #keys()返回的是一个列表,其中包含字典中的所有键
    print(name.title())

3、按特定顺序遍历字典中的所有键

for name in sorted(languages.keys()):
    print(f"{name.title()},thank you for taking the poll")

4、遍历字典中的所有值

for iter in languages.values():
    print(iter.title())

这种做法提取字典中所有的值,而没有考虑是否重复。若重复值太多,最终的列表可能包含大量重复项,为剔除重复项,可使用集合set,使得集合中的每个元素都是独一无二的。

for iter in set(languages.values()):
    print(iter.title())

7. 函数 input()

input()工作原理:让程序暂停运行,等待用户输入一些文本。

message = input("Tell me something, and I will repeat it back to you: ")
print(message)

使用函数input()时,Python将用户输入解读为字符串。但是我们想要使用整形数据的话,可以使用int()来获取数值输入

height = input("How tall are you,in inches?")
height = int(height)

8. 类

创建和使用类

给出一个类的使用例子:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def sit(self):
        printf(f"{self.name} is now sittig.")
  	def roll_over(self)
		print(f"{self.name} rolled over!")

注意:__init__() 是一个特殊的方法,当类创建一个新的实例时,会自动运行该方法。类似于C++里的构造函数。而self是指向实例本身的引用。

每个函数默认第一个参数都是self

使用类和实例

继承

在既有类的基础上编写新类时,通常要调用父类方法__init()__。这将初始化在父类__init()__ 方法中定义的所有属性,从而让子类包含这些属性。给出一个例子:

Car父类代码:

class Car:
    def __init__(self,make,model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
        
	def get_descriptive_name(self):
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()
    def read_odometer(self):
        print(f"This car has {self.odometer_reading} miles on it.")
        
    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
        	self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")
    def increment_odometer(self, miles):
        self.odometer_reading += miles

电动汽车子类实现代码:

class ElectricCar(Car): #子类继承父类,是需要将父类放在子类括号中
    def __init__(self, make, model, year):
        #初始化父类属性
        super().__init__(make, model, year) #特殊方法,可以在子类中调用父类方法
        
my_tesla = ElectricCar("tesla", "model s", 2019)
print(my_tesla.get_descriptive_name())

对于父类的方法,只要它不符合子类模拟的实物的行为,都可以进行重写。为此,可在子类中定义一个与要重写的父类方法同名的方法。这样,Python将不会考虑这个父类方法,而只关注在子类中定义的相应的方法。

导入类

Python标准库

类编码风格

热门相关:洪荒二郎传   戏精老公今天作死没   上神来了   裙上之臣   裙上之臣