Python-Project-3-学习笔记

[TOC]

本次的重点是,Python的list

创建一个列表list

在这个列表(list)中,我们使用 英文逗号“, 分隔每个数据点,然后使用 方括号“[] 将这 5 个数据点括起来,这样就有助于计算机将这些数据分配给变量 row1

一定要遵守语法:

  • 英文逗号 分隔每个数据点
  • 方括号[] 将每个数据点括起来

代码实践验证

row2=['Instagram', 0.0, 'USD', 2161558, 4.5]
row3=['Clash of Clans', 0.0, 'USD', 2130805, 4.5]
print(type(row2),row2)
print(type(row3),row3)

列表的长度与索引

  • 使用 len(...)获取列表的长度
  • 各元素的**索引index**范围:0 <= index <= len(...)
  • 特殊的:
    • list[-1] 指代 list 的倒数第个元素
    • list[-n] 指代 list 的倒数第n个元素

代码实践验证

print("总价是:",row1[1]+row2[1],row1[2])

负索引——列表后几位元素

  • Python中有两套索引系统
  • 正索引:第一个元素的索引号为 0,第二个元素的索引号为 1,依此类推。正索引也是我们常用的索引方式。
  • 负索引:最后一个元素的索引号为 -1,倒数第二个元素的索引号为 -2,依此类推。
  • 如果我们使用的索引号不在两个索引系统的范围内,会报错 IndexError: list index out of range

代码实践验证

print("总价是:",row1[-4]+row2[-4],row1[-3])

列表的切片语法

  • 切片就是从一个列表中切出其中一段数据作为子列表
  • 格式为 list_name[start:stop:step],即 列表名称[起始索引:结尾索引:步距]
    • 起始索引(start-index):切片第一个物件的索引(索引指向的成员将被包含在该切片中)。
    • 结尾索引(stop-index):切片结尾的索引(索引指向的成员不会被包含在切片中)。
    • 步距(step-size):这将允许我们获取起始和结尾中的每个成员,或每两个成员,或每 n 个成员。
    • 负步距将允许从结尾往开始反向获取每 n个成员。
  • 对其中任何一个值,你都可以通过 不提供值提供 None 来使用默认值:
    • 起始索引的默认值为第一个索引,即 0
    • 结尾索引的默认值为最后一个索引,即 len(list_name)
    • 步距的默认值为 1,即每个元素

代码实践验证

print(row1[:4])
print(row1[-2:])

列表的嵌套语法

  • 嵌套存储:将某些列表作为另一个列表元素项进行存储
  • 嵌套读值:切片[起始索引:结尾索引:步距]语法和索引(索引值)语法,都可以串联使用

代码实践验证

row_1 = ['Facebook', 0.0, 'USD', 2974676, 3.5]
row_2 = ['Instagram', 0.0, 'USD', 2161558, 4.5]
row_3 = ['Clash of Clans', 0.0, 'USD', 2130805, 4.5]
row_4 = ['Temple Run', 0.0, 'USD', 1724546, 4.5]
row_5 = ['Pandora - Music & Radio', 0.0, 'USD', 1126879, 4.0]
data_set = [row_1, row_2, row_3, row_4, row_5]

# 方法一
rank_1=data_set[0]
rank_2=data_set[1]
rank_3=data_set[2]
rank_4=data_set[3]
rank_5=data_set[4]
print((rank_1[-1]+rank_2[-1]+rank_3[-1]+rank_4[-1]+rank_5[-1])/5)

# 方法二
print((data_set[0][-1]+data_set[1][-1]+data_set[2][-1]+data_set[3][-1]+data_set[4][-1])/5)

读取CSV文件中的数据

  • Python提供了可以从CSV文件中获取数据的模块csv
  • 使用open(...)打开指定的文件到程序内存
  • 使用模块csv中的函数reader(...)读取数据
  • 使用list(...)来将读取到的数据转化为列表格式

代码实践验证

from csv import reader
opened_file = open('assets/dataset/AppleStore.csv')
read_file = reader(opened_file)
apps_data = list(read_file)
print(len(apps_data))
print(len(apps_data[1:3]))
print(apps_data[1:3])

初试For循环

  • for $x in $list: 将会遍历 $list 中的每个元素,并将其赋值给 $x ,循环执行。
  • 循环执行,直至 $list 中的每个元素都被赋值给 $x 过,循环自动停止。
  • 循环内的代码需要缩进一个Tab,也就是四个空格" "

代码实践验证

from csv import reader
apps_data_set=list(reader(open('assets/dataset/AppleStore.csv')))
print(len(apps_data_set[:101]))
for x in apps_data_set[:101]:
print(x[4])

For循环计算总分/平均分

image-20201007152106946

代码实践验证

from csv import reader
app_data_set = list(reader(open('assets/dataset/AppleStore.csv')))[1:]
rating_sum = 0
for x in app_data_set:
rating = x[8] # 第9列是user_rating_ver
rating_sum += float(rating)
avg_rating = rating_sum/len(app_data_set)
print(rating_sum)
print(avg_rating)

For循环计算平均分

from csv import reader
app_data_set = list(reader(open('assets/dataset/AppleStore.csv')))[1:]
rating_sum = 0
for x in app_data_set:
rating = x[7] # 第8列是user_rating
rating_sum += float(rating)
avg_rating = rating_sum/len(app_data_set)
print(rating_sum)
print(avg_rating)

官方总结

恭喜

恭喜,你已经掌握了:

  • 通过使用包含列表的列表的形式读取大型数据集
  • 使用列表和 for 循环来分析大型数据集

我们一起回顾刚刚遇到的困难和总结出来的经验:

语法

  • 创建数据点列表:
row_1 = ['Facebook', 0.0, 'USD', 2974676, 3.5]
row_2 = ['Instagram', 0.0, 'USD', 2161558, 4.5]
  • 创建包含列表的列表:
data = [row_1, row_2]
  • 检索列表的元素:
first_row = data[0]
first_element_in_first_row = first_row[0]
first_element_in_first_row = data[0][0]
last_element_in_first_row = first_row[-1]
last_element_in_first_row = data[0][-1]
  • 检索多个列表元素并创建一个新列表:
row_1 = ['Facebook', 0.0, 'USD', 2974676, 3.5]
rating_data_only = [row_1[3], row_1[4]]
  • 执行列表切片:
row_1 = ['Facebook', 0.0, 'USD', 2974676, 3.5]
second_to_fourth_element = row_1[1:4]
  • 打开数据集文件并使用它创建列表列表:
opened_file = open('AppleStore.csv')
from csv import reader
read_file = reader(opened_file)
apps_data = list(read_file)
  • 使用 for 循环重复一个过程:
row_1 = ['Facebook', 0.0, 'USD', 2974676, 3.5]
for data_point in row_1:
print(data_point)

概念

  • 列表中的一个数据点对应一个值。
  • 一组数据点构成一个数据集,列表是数据集的展示形式。
  • 列表是我们可以用来存储数据集的数据类型。
  • 使用 for 循环可以自动执行重复过程。