天天看点

Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天

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

  • 一、四种数据集合类型
    • 1、列表list
    • 2、元组tuple
    • 3、集合set
    • 4、字典dict
    • 附:对比表
  • 二、Python代码
  • 三、一句话判断第几天

一、四种数据集合类型

1、列表list

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

2、元组tuple

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

3、集合set

  • 形如:s1 = {1,3,5}
  • 顺序:无序
  • 重复性:元素不可重复
  • 访问方式:没有索引和位置的概念
    Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天

4、字典dict

  • 形如:d = {‘egg’:2.59, ‘milk’:3.19, ‘cheese’:4.80} 的 键值对。键和值一一映射,如:身份证号(键)-个人信息(值)
  • 顺序:无序
  • 访问方式:索引通过查找键来访问值
  • 字典的一些操作:
    Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天
    python演示:
    Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天
    Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天
  • 字典的遍历:
    Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天
    python演示:
    Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、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表示解析成一年中第几天的形式(见上面链接网页)。

Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天

**datetime.datetime型.函数名()**的用法:

Python学习笔记 | 四种数据集合类型list,tuple,set,dict一、四种数据集合类型二、Python代码三、一句话判断第几天