list类型、range()序列、简单认识 类(class)

本文详细介绍了Python中List类型的创建及使用方法,并演示了如何利用range生成特定序列。此外,还涉及了Python类的定义与使用,包括实例方法与静态方法。

list类型

定义:

items = []

这就定义了一个名叫items的list。

往里填充数据:

items.append(1)
items.append(3)
items.append(4)

print(items) #  [1, 3, 4]

range序列

上面那个list,如果我们要append进去0~9的数字。最好是利用循环。

items = []
for x in range(0,10):
    items.append(x)

print(items) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

这里我们就学到了range这个类型,range(0,10)包含0不包含10,可以简写为range(10)

上面还可以这样写:

items = [x for x in range(10)]

print(items) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range()还有第三个参数:步长

#从0到10,步长为2
items = [x for x in range(0,10,2)]

print(items) # [0, 2, 4, 6, 8]

每个元素都x3

items = [x*3 for x in range(0,10,2)]

print(items) # [0, 6, 12, 18, 24]

每个元素都二次方 :

items = [x**2 for x in range(0,10,2)]

print(items) # [0, 4, 16, 36, 64]

什么叫 iterable可迭代

简单说就是可以进行for循环的。
字符串、list类型、字典类型、元组类型,包括自定义的类都是可以迭代。

Python里的类

#自定义类

class Person:
    #类似构造函数
    def __init__(self,name):
        self.name = name

    def show(self):
        print(self.name)


#实例化类
p = Person("jack")
p.show() # jack

注意:self可以换成任意如abc

如何写静态方法?

#自定义类
class Person:

    @staticmethod
    def version():
        print("version 1.0")

@staticmethod是注解。(是不是和Java很像?)

#实例化类
Person.version() #version 1.0
在 C# 中将 JSON 数据反序列化为实体是一个常见的需求,尤其是在处理 Web 请求或文件数据时。以下是一些常用的方法和注意事项。 ### 使用 `Newtonsoft.Json` 进行反序列化 `Newtonsoft.Json`(也称为 Json.NET)是一个广泛使用的第三方库,提供了强大的 JSON 处理功能。反序列化 JSON 字符串为实体对象的过程非常简单。假设有一个 `Student` ,定义如下: ```csharp public class Student { public int studentID { get; set; } public string studentName { get; set; } public int studentAge { get; set; } public string studentSex { get; set; } } ``` 可以使用以下代码将 JSON 字符串反序列化为 `Student` 对象: ```csharp using Newtonsoft.Json; // 假设有一个 JSON 字符串 string json = "{\"studentID\":1,\"studentName\":\"张三\",\"studentAge\":18,\"studentSex\":\"男\"}"; // 反序列化为 Student 实体对象 Student student = JsonConvert.DeserializeObject<Student>(json); ``` ### 处理多级嵌套 JSON 对于多级嵌套的 JSON 数据,首先需要定义与 JSON 结构相对应的实体。例如,假设有一个包含 `Student` 信息的 `RootObject` : ```csharp public class RootObject { public Student student { get; set; } } public class Student { public int studentID { get; set; } public string studentName { get; set; } public int studentAge { get; set; } public string studentSex { get; set; } } ``` 如果 JSON 数据存储在一个文件中,可以使用以下代码读取并反序列化: ```csharp using System.IO; using Newtonsoft.Json; // 读取 JSON 文件内容 string jsonString = File.ReadAllText(@"D:\2021\test.json"); // 反序列化为 RootObject 实体对象 RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(jsonString); ``` ### 必填字段校验 在某些情况下,可能需要确保反序列化后的对象满足特定的业务逻辑要求,例如某些字段必须存在且不为空。可以通过数据注解来实现这一点。例如: ```csharp using System.ComponentModel.DataAnnotations; public class Student { [Required(ErrorMessage = "学生ID是必填项")] public int studentID { get; set; } [Required(ErrorMessage = "学生姓名是必填项")] public string studentName { get; set; } [Range(1, 100, ErrorMessage = "年龄必须在1到100之间")] public int studentAge { get; set; } [Required(ErrorMessage = "性别是必填项")] public string studentSex { get; set; } } ``` 在反序列化后,可以使用 `Validator` 来验证对象是否符合这些规则: ```csharp using System.ComponentModel.DataAnnotations; using System.Text; public static bool ValidateObject(object obj, out string errorMessage) { var validationContext = new ValidationContext(obj); var validationResults = new List<ValidationResult>(); bool isValid = Validator.TryValidateObject(obj, validationContext, validationResults, true); if (!isValid) { var errorBuilder = new StringBuilder(); foreach (var result in validationResults) { errorBuilder.AppendLine(result.ErrorMessage); } errorMessage = errorBuilder.ToString(); } else { errorMessage = null; } return isValid; } ``` 使用示例: ```csharp Student student = JsonConvert.DeserializeObject<Student>(json); string errorMessage; if (!ValidateObject(student, out errorMessage)) { Console.WriteLine("验证失败: " + errorMessage); } else { Console.WriteLine("验证成功"); } ``` ### 总结 通过上述方法,可以在 C# 中轻松地将 JSON 数据反序列化为实体,并对反序列化后的对象进行必要的校验,以确保数据的完整性和有效性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值