真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python列表和元組的應(yīng)用方法是什么

本篇內(nèi)容主要講解“Python列表和元組的應(yīng)用方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python列表和元組的應(yīng)用方法是什么”吧!

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都做網(wǎng)站與策劃設(shè)計(jì),婁底網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:婁底等地區(qū)。婁底做網(wǎng)站價(jià)格咨詢:028-86922220

經(jīng)典的案例

案例1:成績(jī)表和平均分統(tǒng)計(jì)。

說明:錄入5個(gè)學(xué)生3門課程的考試成績(jī),計(jì)算每個(gè)學(xué)生的平均分和每門課的平均分。

這個(gè)案例我們?cè)谥罢f到過,而且提醒過大家在使用嵌套列表時(shí)應(yīng)該避開的坑,下面我們給出完整的代碼。

"""
錄入5個(gè)學(xué)生3門課程的考試成績(jī)
計(jì)算每個(gè)學(xué)生的平均分和每門課的平均分

Version: 0.1
Author: 駱昊
"""
names = ['關(guān)羽', '張飛', '趙云', '馬超', '黃忠']
courses = ['語文', '數(shù)學(xué)', '英語']
# 用生成式創(chuàng)建嵌套的列表保存5個(gè)學(xué)生3門課程的成績(jī)
scores = [[0] * len(courses) for _ in range(len(names))]
# 錄入數(shù)據(jù)
for i, name in enumerate(names):
   print(f'請(qǐng)輸入{name}的成績(jī) ===>')
   for j, course in enumerate(courses):
       scores[i][j] = float(input(f'{course}: '))
print()
print('-' * 5, '學(xué)生平均成績(jī)', '-' * 5)
# 計(jì)算每個(gè)人的平均成績(jī)
for index, name in enumerate(names):
   avg_score = sum(scores[index]) / len(courses)
   print(f'{name}的平均成績(jī)?yōu)? {avg_score:.1f}分')
print()
print('-' * 5, '課程平均成績(jī)', '-' * 5)
# 計(jì)算每門課的平均成績(jī)
for index, course in enumerate(courses):
   # 用生成式從scores中取出指定的列創(chuàng)建新列表
   curr_course_scores = [score[index] for score in scores]
   avg_score = sum(curr_course_scores) / len(names)
   print(f'{course}的平均成績(jī)?yōu)椋簕avg_score:.1f}分')

上面對(duì)列表進(jìn)行遍歷的時(shí)候,使用了enumerate函數(shù),這個(gè)函數(shù)非常有用。我們之前講過循環(huán)遍歷列表的兩種方法,一種是通過索引循環(huán)遍歷,一種是直接遍歷列表元素。通過enumerate處理后的列表在循環(huán)遍歷時(shí)會(huì)取到一個(gè)二元組,解包之后第一個(gè)值是索引,第二個(gè)值是元素,下面是一個(gè)簡(jiǎn)單的對(duì)比。

items = ['Python', 
'Java', 
'Go', 
'Swift']

for index in range(len(items)):
   print(f'{index}: {items[index]}')

for index, item in enumerate(items):
   print(f'{index}: {item}')

案例2:設(shè)計(jì)一個(gè)函數(shù)返回指定日期是這一年的第幾天。

說明:這個(gè)案例源于著名的The C Programming Language上的例子。

"""
計(jì)算指定的年月日是這一年的第幾天

Version: 0.1
Author: 駱昊
"""
def is_leap_year(year):
   """判斷指定的年份是不是閏年,平年返回False,閏年返回True"""
   return year % 4 == 0 and year % 100 != 0 or year % 400 == 0def which_day(year, month, date):
   """計(jì)算傳入的日期是這一年的第幾天
   :param year: 年
   :param month: 月
   :param date: 日
   """
   # 用嵌套的列表保存平年和閏年每個(gè)月的天數(shù)
   days_of_month = [
       [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
       [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
   ]
   # 布爾值False和True可以轉(zhuǎn)換成整數(shù)0和1,因此
   # 平年會(huì)選中嵌套列表中的第一個(gè)列表(2月是28天)
   # 閏年會(huì)選中嵌套列表中的第二個(gè)列表(2月是29天)
   days = days_of_month[is_leap_year(year)]
   total = 0
   for index in range(month - 1):
       total += days[index]
   return total + dateprint(which_day(1980, 11, 28))    # 333
print(which_day(1981, 12, 31))    # 365
print(which_day(2018, 1, 1))      # 1
print(which_day(2016, 3, 1))      # 61

案例3:實(shí)現(xiàn)雙色球隨機(jī)選號(hào)。

說明:雙色球?qū)賚etou型caipiao范疇,由中國(guó)福利caipiao發(fā)行管理中心統(tǒng)一組織發(fā)行,在全國(guó)范圍內(nèi)銷售。紅球號(hào)碼范圍為01~33,藍(lán)球號(hào)碼范圍為01~16。雙色球每期從33個(gè)紅球中開出6個(gè)號(hào)碼,從16個(gè)藍(lán)球中開出1個(gè)號(hào)碼作為中獎(jiǎng)號(hào)碼,雙色球玩法即是競(jìng)猜開獎(jiǎng)號(hào)碼的6個(gè)紅球號(hào)碼和1個(gè)藍(lán)球號(hào)碼。

這個(gè)題目的思路是用一個(gè)列表保存紅色球的號(hào)碼,然后通過random模塊的sample函數(shù)實(shí)現(xiàn)無放回抽樣,這樣就可以抽中6個(gè)不重復(fù)的紅色球號(hào)碼。紅色球需要排序,可以使用列表的sort方法,顯示的時(shí)候一位數(shù)前面需要做補(bǔ)0的操作,可以用字符串格式化的方式來處理。

"""
雙色球隨機(jī)選號(hào)

Version: 0.1
Author: 駱昊
"""
from random import randint, sample def display(balls):
   """輸出列表中的雙色球號(hào)碼"""
   for index, ball in enumerate(balls):
       if index == len(balls) - 1:
           print('|', end=' ')
       print(f'{ball:0>2d}', end=' ')
   print()def random_select():
   """隨機(jī)選擇一組號(hào)碼"""
   # 用生成式生成1到33號(hào)的紅色球
   red_balls = [x for x in range(1, 34)]
   # 通過無放回隨機(jī)抽樣的方式選中6個(gè)紅色球
   selected_balls = sample(red_balls, 6)
   # 對(duì)紅色球進(jìn)行排序
   selected_balls.sort()
   # 用1到16的隨機(jī)數(shù)表示選中的藍(lán)色球并追加到列表中
   selected_balls.append(randint(1, 16))
   return selected_ballsn = int(input('機(jī)選幾注: '))
for _ in range(n):
   display(random_select())

溫馨提示:caipiao的本質(zhì)是:虛構(gòu)一個(gè)不勞而獲的事,去忽悠一群想不勞而獲的人,最終養(yǎng)活一批真正不勞而獲的人。所以,珍愛生命,遠(yuǎn)離各種形式的dubo。

案例4:幸運(yùn)的女人。

說明:有15個(gè)男人和15個(gè)女人乘船在海上遇險(xiǎn),為了讓一部分人活下來,不得不將其中15個(gè)人扔到海里,有個(gè)人想了個(gè)辦法讓大家圍成一個(gè)圈,由某個(gè)人開始從1報(bào)數(shù),報(bào)到9的人就扔到海里面,他后面的人接著從1開始報(bào)數(shù),報(bào)到9的人繼續(xù)扔到海里面,直到將15個(gè)人扔到海里。最后15個(gè)女人都幸免于難,15個(gè)男人都被扔到了海里。問這些人最開始是怎么站的,哪些位置是男人,哪些位置是女人。

上面這個(gè)問題其實(shí)就是著名的約瑟夫環(huán)問題。我們可以通過一個(gè)列表來保存這30個(gè)人是死是活的狀態(tài),例如用布爾值True表示活著的人,用False表示被扔到海里的人。最開始的時(shí)候列表中的30個(gè)元素都是True,然后我們通過循環(huán)的方式去執(zhí)行報(bào)數(shù),找到要扔到海里的人并將對(duì)應(yīng)的列表元素標(biāo)記為False,循環(huán)會(huì)執(zhí)行到將列表中的15個(gè)元素標(biāo)記為False,循環(huán)的過程中,列表的索引始終在0到29的范圍,超過29就回到0,這樣剛好可以形成一個(gè)閉環(huán)。

"""
幸運(yùn)的女人(約瑟夫環(huán)問題)

Version: 0.1
Author: 駱昊
"""
persons = [True] * 30
# counter - 扔到海里的人數(shù)
# index - 訪問列表的索引
# number - 報(bào)數(shù)的數(shù)字
counter, index, number = 0, 0, 0
while counter < 15:
   if persons[index]:
       number += 1
       if number == 9:
           persons[index] = False
           counter += 1
           number = 0
   index += 1
   index %= 30
for person in persons:
   print('女' if person else '男', end='')

到此,相信大家對(duì)“Python列表和元組的應(yīng)用方法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


標(biāo)題名稱:Python列表和元組的應(yīng)用方法是什么
URL鏈接:http://weahome.cn/article/gscsss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部