处理列表的数据

处理列表数据

意志命运往往背道而驰,决心到最后会全部推倒。——莎士比亚

当数据量非常庞大,我们想获取到里面的数据该怎么办

比如上个单元的存储的电影数组,要是上千条的数据,依据上单元的方法,只能一条条加,但是这样效率太低了.所以我们要引入一个新的概念 循环 也有人管这个叫迭代

For 循环

  • 循环就是重复做一件事。比如每天都要吃饭,这件事可以看成循环

For 循环处理任意大小的列表

  • 基本语法

for 目标 in 数组 :

   具体的操作数组的代码

首先 for in 关键字 后面必须有”:” 在 Python 中 没有大括号一说,他靠的都是空白符 也就是缩进,来表示在循环体内部还是外部

  • 循环出内容

arr = ['这个杀手不太冷', '唐人街探案', '囧妈', '杀死比尔', '蓝色生死恋', "终结者", "复仇者联盟"]
for _item in arr:
    print(_item)
print("over")
  • 最后结果
这个杀手不太冷
唐人街探案
囧妈
杀死比尔
蓝色生死恋
终结者
复仇者联盟
over
  • 循环出序号和内容,则必须要变成枚举 利用 enumerate(数组,开始的序号)

arr = ['这个杀手不太冷', '唐人街探案', '囧妈', '杀死比尔', '蓝色生死恋', "终结者", "复仇者联盟"]
for index, val in enumerate(arr, 0):
    print(str(index)+"---"+val)

# 这里index是数字 所以前面必须加 str转一下变成字符串,int转一下变成数字

# 结果
# 0---这个杀手不太冷
# 1---唐人街探案
# 2---囧妈
# 3---杀死比尔
# 4---蓝色生死恋
# 5---终结者
# 6---复仇者联盟
  • 也可以通过序号来循环这里就必须要用到一个函数 range

range 函数就是随机的生成与一系列的数字.它包前不包后 他支持 3 个参数(起始,结束,步长)


arr = [{"name": "鼠", "value": 25}, {'name': '牛', 'value': 35}]

for index in range(len(arr)):
    print(arr[index])

# 结果
#{'name': '鼠', 'value': 25}
#{'name': '牛', 'value': 35}

在列表中存储列表

  • 后面可以无限接中括号[]

arr2 = ['这个杀手不太冷', 1978, '唐人街探案', 1983, [
    '囧妈', ['杀死比尔', '蓝色生死恋', ["终结者", '复仇者联盟']]]]


print(arr2[4][1][2][0])

# 结果

# 终结者

在列表中查找列表

  • 基础版本,但是重复代码非常多这个时候我们就需要引入函数的概念

for index, item in enumerate(arr2, 0):
    if type(item) is list:
        print(item)
        for index, _item in enumerate(item, 0):
            if type(_item) is list:
                print(_item)
                for index, content in enumerate(_item, 0):
                    if type(content) is list:
                        print(content)
                        for index, result in enumerate(content, 0):
                            if index == 0:
                                print(result)
print("over")

# 结果

# 终结者
# over

在 Python 中创建一个函数

  • Python 中的函数是一个命名的代码组,如果需要,还可以有一个参数表(可选)

函数定义

  • 要用 def 语句定义一个 Python 函数,为函数提供一个函数名,并在括号里指定一个参数表,参数表也可以为空,如下

def 函数名 (参数):
    函数代码组
  • 针对上面那个循环 我们可以使用递归的方法来优化代码

arr2 = ['这个杀手不太冷', 1978, '唐人街探案', 1983, [
    '囧妈', ['杀死比尔', '蓝色生死恋', ["终结者", '复仇者联盟']]]]

def printresult(arr2):
    count = 0
    for index, item in enumerate(arr2, 0):
        if type(item) is list:
            print(item)
            printresult(item)
        else:
            count += 1
            if count == len(arr2):
                print(arr2[0])
                print("一切都结束了")


printresult(arr2)

'''

结果

['囧妈', ['杀死比尔', '蓝色生死恋', ['终结者', '复仇者联盟']]]
['杀死比尔', '蓝色生死恋', ['终结者', '复仇者联盟']]
['终结者', '复仇者联盟']
终结者
一切都结束了

'''

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录