python——高级特性(2)

简介: 迭代在python中迭代是通过for ....in...完成的,只要是可迭代对象都可以迭代#!usr/bin/python#-*- coding:UTF-8 -*-#tuple迭代t=[(1,'a','z'),(2,'b','z')]for x,y,z in t: print(...

迭代

在python中迭代是通过for ....in...完成的,只要是可迭代对象都可以迭代

#!usr/bin/python
#-*- coding:UTF-8 -*-

#tuple迭代
t=[(1,'a','z'),(2,'b','z')]for x,y,z in t:
    print(x,z)

#enumerate函数可以把一个list或者tuple变成“索引-元素”对
for i,value in enumerate(t):
    print(i,value)

》1 z
》2 z

》0 (1, 'a', 'z')
》1 (2, 'b', 'z')

注意:这里输出的其实是tuple(括号省略掉了)

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

#dict的迭代
d={'city':'SH','age':12,'sex':'G'}
for k in d.items():
    print(k)

输出》
('city', 'SH')
('age', 12)
('sex', 'G')

判断

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

#Iterable类型判断 使用isinstance函数
from collections import Iterable
#str是否可以迭代
print('str是否可以迭代',isinstance('abc',Iterable))
#list是否可以迭代
print('list是否可以迭代',isinstance([1,2,3],Iterable))
#整数是否可以迭代
print('整数是否可以迭代',isinstance(123,Iterable))

输出》
str是否可以迭代 True
list是否可以迭代 True
整数是否可以迭代 False

使用迭代

使用迭代返回一个list的最小值和最大值

#使用迭代找到list中的最小值和最大值并返回
def findMinAndMax(L):
    if L==[]:
        return (None,None)
    min=max=L[0]
    for n in L:
        if min>n:
            min=n
        if max<n:
            max=n
    return (min,max)

print(findMinAndMax([1,3,4,55,2]))
》(1, 55)

列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。写列表生成式要把元素放在前面,后面for...in...,后面可以加i判断,比如:

#列表生成式
li=[x*x for x in range(1,11) if x%2==0]
print(li)

》[4, 16, 36, 64, 100]

应用

运用它可以写出非常简洁的代码,例如列出当前目录下所有的文件和目录名,可以通过一行代码实现:

import os#导入os模块
print([s for s in os.listdir('.')])

》['DLLs', 'Doc', 'include', 'iter.py', 'Lib',
 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe',
 'python3.dll', 'python36.dll', 'pythonw.exe', 
'README.txt', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']

列表生成式也可以添加if语句

通过添加if语句将list中的字符串小写

# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=[s.lower() for s in L1 if isinstance(s,str)]
print(L1)
print(L2)

》['Hello', 'World', 18, 'Apple', None]
》['hello', 'world', 'apple']

 

 

生成器

在Python中,这种一边循环一边计算的机制,称为生成器:generator。

未完待续。。。

 

目录
相关文章
|
15天前
|
Python
闭包(Closure)是**Python中的一种高级特性
闭包(Closure)是**Python中的一种高级特性
32 8
|
2月前
|
存储 大数据 数据处理
Python 中的列表推导式与生成器:特性、用途与区别
Python 中的列表推导式与生成器:特性、用途与区别
29 2
|
3月前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
67 3
|
2月前
|
设计模式 监控 安全
Python多线程编程:特性、挑战与最佳实践
Python多线程编程:特性、挑战与最佳实践
42 0
|
2月前
|
设计模式 监控 安全
Python多线程编程:特性、挑战与最佳实践【1】
Python多线程编程:特性、挑战与最佳实践【1】
36 0
|
4月前
|
存储 数据库 C++
"深入剖析Python元组(tuple):与列表的对比、特性解析及高效应用场景展示"
【8月更文挑战第9天】Python元组与列表虽均用于存储元素集合,但有本质差异。元组不可变,创建后无法修改,适合保护数据不被意外更改的场景,如作字典键或传递固定值。列表则可变,支持动态增删改,适用于需频繁调整的数据集。元组因不可变性而在性能上有优势,可用于快速查找。两者各有千秋,根据具体需求选择使用。例如,元组可用于表示坐标点或日期,而列表更适合管理用户列表或库存。
123 1
|
4月前
|
安全 算法 Go
Python面向对象的三大特性
python面向对象编程(OOP)的三大特性是封装、继承和多态。这些特性共同构成了OOP的基础,使得软件设计更加灵活、可维护和可扩展。
41 3
|
4月前
|
机器学习/深度学习 运维 数据挖掘
scikit-learn 1.0 版本重要新特性一览
scikit-learn 1.0 版本重要新特性一览
|
5月前
|
机器学习/深度学习 数据采集 前端开发
网络爬虫开发:JavaScript与Python特性的小差异
我们以前写JavaScript的代码时,在遇到了发送请求时,都是需要去await的。 但是为什么Python代码不需要这样做呢? 这就是因为JavaScript是异步的,Python是同步的。 JavaScript就需要使用关键词await将异步代码块变为同步代码。
|
5月前
|
数据库 开发者 Python
Python 3.9的新特性有哪些?
【7月更文挑战第2天】Python 3.9的新特性有哪些?
65 1