Python 元组tuple 列表list 字典dict集合set迭代器生成器

Posted mario24678

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 元组tuple 列表list 字典dict集合set迭代器生成器相关的知识,希望对你有一定的参考价值。

一、元组:  tuple

Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup2 = (111, 22, 33, 444, 55, 6, 77 )
for x in (tup2):      #遍历
    print(x)


list2 = [111, 22, 33, 444, 55, 6, 77 ]
tup2 = tuple(list2)    #将列表转变为元组

二、列表:list

遍历列表:

#遍历列表
list1 = [1, 2, 3, 6, 5, 4]
for x in list1:
    print(x, end=",")  # 运行结果:1,2,3,6,5,4,

for i in range(len(list1)):
    print("序号:", i, "  值:", list1[i])

for i, val in enumerate(list1):
    print("序号:", i, "  值:", val)

for i in list1:
    idx = list1.index(i) # 索引
    if (idx < len(list1) - 1):
        print(i, \'---------\', list1[idx + 1])

三、字典:dict

dict = \'name\': \'pp\', \'age\': 20, "gender": "man"
dict["name"] = "sss"

for key in dict.keys():  # 遍历字典。字典的 keys() 方法以列表返回可遍历的(键) 元组数组。
    print(key)

for val in dict.values():  # 遍历字典。字典的 values() 方法以列表返回可遍历的(值) 元组数组。
    print(val)

for key, val in dict.items():  # 遍历字典。字典的 items() 方法以列表返回可遍历的(键, 值) 元组数组。
    print(key, " : ", val)

字典的多级嵌套:

citys=
    \'北京\':
        \'朝阳\':[\'国贸\',\'CBD\',\'天阶\'],
        \'海淀\':[\'圆明园\',\'苏州街\',\'中关村\',\'北京大学\'],
        \'昌平\':[\'沙河\',\'南口\',\'小汤山\',],
        \'怀柔\':[\'桃花\',\'梅花\',\'大山\']
    ,
    \'河北\':
        \'石家庄\':[\'石家庄A\',\'石家庄B\',\'石家庄C\'],
        \'张家口\':[\'张家口A\',\'张家口B\',\'张家口C\']
    

for i in citys[\'北京\']:
    print(i)

for i in citys[\'北京\'][\'海淀\']:
    print(i)

四、集合:set

集合(set)是一个无序不重复元素的序列。 基本功能是进行成员关系测试和删除重复元素。

集合无序,元素不能重复。

去重:将列表转化为集合,集合再转化为列表,就可以去重。

可以使用大括号 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 ,因为 是用来创建一个空字典。

student = \'Tom\', \'Jim\', \'Mary\', \'Tom\', \'Jack\', \'Rose\'
print(student)   # 输出集合,重复的元素被自动去掉 \'Mary\', \'Jim\', \'Rose\', \'Jack\', \'Tom\' 

# 成员测试
if(\'Rose\' in student) :
    print(\'Rose 在集合中\')
else :
    print(\'Rose 不在集合中\')
#Rose 在集合中
从一个大集合里,去除一个小集合
set000 = set("123456789")
set1 = set(["2", "3", "5", "5", "6", "0"])
print(set000 - set1)
#\'7\', \'8\', \'9\', \'1\', \'4\'

元组 => 列表,字符串 <=> 列表的转换

# 元组 => 列表
tuple1 = (123, \'haha\', \'she\', \'hehe\')
list1 = list(tuple1)   #将元组转换为列表。运行结果:[123, \'haha\', \'she\', \'hehe\']
print(list1)
# 字符串 <=> 列表
str1 = \'天地玄黄宇宙洪荒\'
list1 = list(str1)  # 字符串转为列表
str2 = "".join(list1)  # 列表转为字符串
print(str2)

str1 = \'天地,玄黄,宇宙,洪荒\'
list1 = str1.split(",")  # 字符串转为列表
print(list1)

str1 = \'天地玄黄宇宙洪荒\'
str2 = str1[::-1]  # 字符串倒序
print(str2)

五、迭代器、生成器

迭代器有两个基本的方法:iter() 和 next()

import sys  # 引入 sys 模块

list = [1, 2, 3, 4]
it = iter(list)  # 创建迭代器对象

while True:
    try:
        print(next(it))
    except StopIteration:
        sys.exit()

使用了 yield 的函数被称为生成器(generator)。  跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作

import sys
def fibonacci(n):  # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n):
            return
        yield a
        a, b = b, a + b
        counter += 1

f = fibonacci(10)  # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print(next(f), end=" ")
    except StopIteration:
        sys.exit()

六、Map,Filter,Reduce

1.Map 会将一个函数映射到一个输入列表的所有元素上(可以同时对list里的所有元素进行操作,并以列表方式给出返回值。)
2. filter 过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表。  (可以用来过滤原有的list,并把过滤结果放进新的list里。)
3. 当需要对一个列表进行一些计算并返回结果时,Reduce 是个非常有用的函数。(可以对列表顺序执行算术运算。)

参考文献

https://www.cnblogs.com/qq21270/p/7872824.html

以上是关于Python 元组tuple 列表list 字典dict集合set迭代器生成器的主要内容,如果未能解决你的问题,请参考以下文章

Python 元组tuple 列表list 字典dict集合set迭代器生成器

Python中list(列表)tuple(元组)dict(字典)基本操作快速入门

python 数据类型: 数字Nubmer / 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

Python列表(list)、元祖(tuple)、集合(set),和字典(dictionary)区别和联系

python基础-列表 元组 集合 字典区别和用法

Python数据类型:序列(字符串str列表list元组tuple字典dict范围range)