天天看點

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代碼三、一句話判斷第幾天