Python学习笔记 | 四种数据集合类型list,tuple,set,dict

本文介绍了Python的四种数据集合类型——列表list、元组tuple、集合set和字典dict,包括它们的特点、用法及应用场景。通过示例代码展示了如何使用这些数据类型,并提供了一行代码求一年中的第几天的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、四种数据集合类型

1、列表list

  • 形如:l1 = [1,3,5,7,9,11]
  • 顺序:有序
  • 访问方式:索引
  • 每个元素类型可以不同(在使用时一般类型相同)

2、元组tuple

  • 形如:t1 = (1,2,4,6,8,‘abc’)
  • 修改方式:不可修改
  • 访问方式:索引
  • 每个元素类型可以不同(在使用时一般类型不同
  • 应用:函数有多个返回值,或数据个数固定时常使用

3、集合set

  • 形如:s1 = {1,3,5}
  • 顺序:无序
  • 重复性:元素不可重复
  • 访问方式:没有索引和位置的概念
    在这里插入图片描述

4、字典dict

  • 形如:d = {‘egg’:2.59, ‘milk’:3.19, ‘cheese’:4.80}键值对。键和值一一映射,如:身份证号(键)-个人信息(值)
  • 顺序:无序
  • 访问方式:索引通过查找键来访问值
  • 字典的一些操作:
    在这里插入图片描述
    python演示:
    在这里插入图片描述在这里插入图片描述
  • 字典的遍历:
    在这里插入图片描述
    python演示:
    在这里插入图片描述

附:对比表

待补

二、Python代码

下面四个代码是分别用list、tuple、set、dict写的判断输入日期是一年当中的第几天

#应用list,好处是可修改

from datetime import datetime

def is_leap_year(year):
    """
        判断闰年
        是:返回True
        否:返回False
    """
    is_leap = False
    if (year % 400 == 0) or (year % 4 == 0) and (year % 100 != 0):
        is_leap = True
    return is_leap


def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    # 打印出datetime.datetime型
    print(input_date)

    #拿到datetime.datetime型的日月年
    year = input_date.year
    month = input_date.month
    day = input_date.day

    #天数 = 之前月份的天数 + 当月天数
    days_in_month_list = [31,28,31,30,31,30,31,31,30,31,30,31]
    if is_leap_year(year):
        days_in_month_list[1] = 29
    days = sum(days_in_month_list[:(month - 1)]) + day

    print('这是{}年的第{}天'.format(year, days))

if __name__ == '__main__':
    main()
#应用tuple,不可修改
from datetime import datetime

def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    print(input_date)

    year = input_date.year
    month = input_date.month
    day = input_date.day

    #天数 = 之前月份的天数 + 当月天数
    days_in_month_tup = (31,28,31,30,31,30,31,31,30,31,30,31)
    days = sum(days_in_month_tup[:(month - 1)]) + day

    #判断闰年,如果是,天数加1
    if (year % 400 == 0) or (year % 4 == 0) and (year % 100 != 0):#and先于or
        if month > 2:
            days += 1

    print('这是第{}天'.format(days))

if __name__ == '__main__':
    main()
#应用set
from datetime import datetime

def is_leap_year(year):
    """
        判断闰年
        是:返回True
        否:返回False
    """
    is_leap = False
    if (year % 400 == 0) or (year % 4 == 0) and (year % 100 != 0):
        is_leap = True
    return is_leap


def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    # 打印出datetime.datetime型
    print(input_date)

    #拿到datetime.datetime型的日月年
    year = input_date.year
    month = input_date.month
    day = input_date.day

    #30天和31天的月份集合
    _30_days_month_set = {4,6,9,11}
    _31_days_month_set = {1,3,5,7,8,10,12}

    days = day

    for i in range(1,month):
        if i in _30_days_month_set:
            days += 30
        elif i in _31_days_month_set:
            days += 31
        else:
            days += 28

    if is_leap_year(year) and month > 2:
        days += 1

    print('这是{}年的第{}天'.format(year, days))

if __name__ == '__main__':
    main()
#应用dict
from datetime import datetime

def is_leap_year(year):
    """
        判断闰年
        是:返回True
        否:返回False
    """
    is_leap = False
    if (year % 400 == 0) or (year % 4 == 0) and (year % 100 != 0):
        is_leap = True
    return is_leap

def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    # 打印出datetime.datetime型
    print(input_date)

    #拿到datetime.datetime型的日月年
    year = input_date.year
    month = input_date.month
    day = input_date.day

    #月份-天数 字典
    month_day_dict = {1:31,
                      2:28,
                      3:31,
                      4:30,
                      5:31,
                      6:30,
                      7:31,
                      8:31,
                      9:30,
                      10:31,
                      11:30,
                      12:31}
                      
    #另一种思路。创建:天数-月份 字典
    day_month_dict = {30:{4,6,9,11},
                      31:{1,3,5,7,8,10,12}}
                      
    #初始化值
    days = 0
    days += day

    for i in range(1,month):
        days += month_day_dict[i]

    if is_leap_year(year) and month > 2:
        days += 1

    print('这是{}年的第{}天'.format(year, days))

if __name__ == '__main__':
    main()

三、一句话判断第几天

python竟然提供了一行代码,求“第几天”
https://docs.python.org/3/library/time.html#time.strftime

下面是我的做法:
思路:now的类型是datetime.datetime型。要拿到它是第几天,和拿到它的年份,月份,日份的道理是相同的。只需now.函数,即可。这里的函数就是解析函数strftime()将datetime.datetime型解析成字符串。%f表示解析成一年中第几天的形式(见上面链接网页)。
在这里插入图片描述**datetime.datetime型.函数名()**的用法:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值