原文链接:http://www.one2know.cn/python2/

  • 输入一个字符串,以列表输出大写,如果包含整数,转为整型
str = input()
list = []
for i in str:
if i.isdecimal() == True:
list.append(int(i))
else:
list.append(i.upper())
  • 判断字符的类型:字母,数字,空格

    char.isalpha()

    char.isdigit()

    char.isspace()
  • 两个矩阵相加
m = [[1,2,3],[4,5,6],[7,8,9]]
n = [[1,2,3],[4,5,6],[7,8,9]]
num = [m[i][j] + n[i][j] for i in range(3) for j in range(3)]
  • 列表推导式
list = []
for i in range(3,10):
if i % 2 == 0:
list.append(i)

可简写成:

list = [i for i in range(3,10) if i % 2 == 0]

  • 嵌套列表推导
m = [[1,2,3],
[4,5,6],
[7,8,9]]
list = []
for i in m:
for j in i:
list.append(j)

可简写成:

list = [j for i in m for j in i]

  • 打印菱形
for i in range(1,8,2):
print(('*'*i).center(7))
for i in range(5,0,-2):
print(('*'*i).center(7))
  • 判断回文数:当成str比较是否相同就行了,用数字麻烦

    也可以使用切片,比较其与反切是否相等(num == num[::-1])
  • 四个数字1,2,3,4组成的多少互不相同且无重复的数字
for x in range(1,5):
for y in range(1,5):
for z in range(1,5):
if x != y and x != z and y != z:
print(x * 100 + y * 10 + z)

用列表推导式:

num = [x*100+y*10+z for for x in range(1,5) for y in range(1,5) for z in range(1,5) if x != y and x != z and y != z]

  • 字典推导式
names = ['tom','jerry','jack']
name = {k:v for k,v in enumerate(names)}
print(name)

输出为:{0:'tom',1:'jerry',2:'jack'}

  • 冒泡排序:将2,6,4,9,3,10从大到小排列
list = [2,6,4,9,3,10]
for i in range(len(list)-1):
for j in range(len(list)-1-i):
if list[j] < list[j+1]:
list[j],list[j+1] = list[j+1],list[j]
print(list)
  • 函数的定义
def function_name([参数](形参)):
#函数说明
要封装的代码块
function_name([参数(实参)]) #调用函数
  • 可以将函数名赋值给另一个变量,相当于起个别名
  • 函数的参数要一一对应,或者用关键字参数
def f(x,y):
print(x-y)
f(2,1)
f(y=1,x=2)
  • 不定长参数
def getInfo(name,address,*args,**args2):
#*args 是接受所有未命名的参数(关键字)
#**args2 是接受所有命名的参数(带关键字的)
print('我叫%s,来自%s'%(name,address))
print(args) #元组类型
print(args2) #字典类型
getInfo('tom','china','a','b','c',age = 18)

输出:

我叫tom,来自china

('a','b','c')

{'age' : 18}

  • 可变参数与不可变参数
def fun(*args):
args = hello
print(args)
str = 'baby'
fun(str1) #输出hello
print(str1) #输出baby,因为string是不可变类型,若为可变类型(如list),则参数也会被修改
  • return之后的代码不会执行,例如
def sum(x,y):
return x+y #将结果回到调用的位置上
print(x+y) #不会执行
print(sum(1,2))
  • yield生成器,生成一个迭代器
def getNum(n):
i = 0
while i <= n:
#print(i) #打印i
#return i #返回第一个i(即0),结束函数的运行
b = yield i #将函数变成一个generator,直接在yield处暂停了,没有赋值操作
i += 1
#getNum(5)
print(getNum(5))
a = getNum(5)
for i in a:
print(i)
  • a = [ x for x in range(100000)]会占用很大内存

    a = (x for x in range(100000))生成迭代器,用next(a)一次输出一个数据
  • 迭代器:能被next()不断调用返回下一个对象

    可迭代对象:list string dict ≠ 迭代器
list = [1,2,3,4]
a = iter(list)
print(a)
print(next(a))
  • isinstance(s,str)判断数据类型,相当于type(s) == str
  • 变量的作用域

    局部变量:声明在函数内部的是局部变量,外部无法使用

    全局变量:大家都能使用
  • 修改全局变量:

    对于不可变类型:在函数内用global修改为全局变量

    对于可变类型::可以不使用global声明
def fun1():
global a
a = 1
print(a)
def fun2():
global a
a = 2
print(a)
a = 3
fun1()
fun2()
print(a)

输出为:

1

2

2

  • 递归函数
def main(n):
print(n)
if n == 3:
print('start')
else:
main(n+1)
print(n)
main(1)

输出:

1

2

3

'start'

3

2

1

分析:

main(1)=print(1)+main(2)+print(1)=print(1)+print(2)+main(3)+print(2)+print(1)=print(1)+print(2)+print(3)+print('start')+print(3)+print(2)+print(1)

  • 匿名函数:lambda [参数](可有可无): 表达式(相当于return xx)

    lambda内部一般只能放简单的表达式,特殊地,s = lambda x,y : x if x > y else y

    没有参数:s = lambda : 'abc';print(s())

    一个参数:s = lambda x : x*2;print(s(3))

    多个参数:s = lambda x,y : x+y;print(s(1,2))

Python 基础(二)的更多相关文章

  1. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  2. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  3. Python基础(二) —— 字符串、列表、字典等常用操作

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 二.三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为 ...

  4. python基础(二)----数据类型

    Python基础第二章 二进制 字符编码 基本数据类型-数字 基本数据类型-字符串 基本数据类型-列表 基本数据类型-元组 可变.不可变数据类型和hash 基本数据类型-字典 基本数据类型-集合 二进 ...

  5. python基础二(基础数据类型)

    一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...

  6. Python菜鸟之路:Python基础(二)

    一.温故而知新 1. 变量命名方式 旧的方式: username = 'xxxx' password = 'oooo' 新的方式: username, password = 'xxxx', 'oooo ...

  7. python基础二(list,tuple元祖、dic字典,字符串)

    一.列表list 1.list定义 列表即数组 ,list或array..列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引.最后一个元素的下标也可用-1表示.: list定义时, ...

  8. Python基础二. 数据结构、控制流、运算符、真值测试

    一.概述 数据结构上广义上有两种,单一类型和集合类型 单一类型,表示一种对象 集合类型,表示包含多种对象 Python 中的内建的数据类型有str.list.tuple.dict.set.number ...

  9. 【笔记】Python基础二:数据类型之集合,字符串格式化,函数

    一,新类型:集合 集合出现之前 python_l = ['lcg','szw','zjw'] linux_l = ['lcg','szw','sb'] #循环方法求交集 python_and_linu ...

  10. Python之路-python基础二

    本章内容:      一.编码格式      二.常用数据类型      三.字符串常用方法      四.列表常用方法  五.数据运算      六.课后作业 编码格式:       ASCII A ...

随机推荐

  1. windows上使用pip下载东西时报编码错误问题解决方法

    原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-packages 建一个文件site ...

  2. 【部分转载】:【lower_bound、upperbound讲解、二分查找、最长上升子序列(LIS)、最长下降子序列模版】

    二分 lower_bound lower_bound()在一个区间内进行二分查找,返回第一个大于等于目标值的位置(地址) upper_bound upper_bound()与lower_bound() ...

  3. DesignPattern系列__05开闭原则

    介绍 开闭原则是编程设计中最基本.最重要的原则. 定义:一个软件实体如类.方法和模块等,应该对扩展(提供方)开放,对修改(使用方)关闭.用抽象构建框架,用实现扩展细节. 也就是说,在需求发生新的变化时 ...

  4. 浅谈Ceph纠删码

    目  录第1章 引言 1.1 文档说明 1.2 参考文档 第2章 纠删码概念和原理 2.1 概念 2.2 原理 第3章 CEPH纠删码介绍 3.1 CEPH纠删码用途 3.2 CEPH纠删码库 3.3 ...

  5. 记一次织梦cms渗透测试

    记一次织梦cms渗透测试 0x01 前言 本次测试的整个流程:枚举用户名-针对性暴破-登录后台-后台编辑php文件getshell. 0x02 过程 1.登录功能模块存在用户名枚举缺陷,利用此权限先枚 ...

  6. OpenCV中图像处理

    一.颜色空间转换 1.cv2.cvtColor(input_img,flag) 参数1是要转换的图像 参数2是转换类型  例如:cv2.COLOR_BGR2HSV (RGB->HSV) cv2. ...

  7. .net core + mvc 手撸一个代码生成器

    最近闲来无事,总想倒腾点什么,索性弄下代码生成器,这里感谢叶老板FreeSql的强大支持. 以前也用过两款不错的代码生成器,这里说说我的看法 1.动软代码生成器,优点很明显,免费,简单,但是没法高度自 ...

  8. MYSQL 入门配置

    1.下载 MYSQL官网 2.目录结构图基本如下 3.运行CMD(管理员权限),进入MYSQL目录下面的bin目录 4.执行 mysqld install 5.执行 net start mysql 6 ...

  9. 【已解决】Https请求—未能创建 SSL/TLS 安全通道

    在做项目的微信推送消息功能时,由于微信并发量大,导致其它第三方接口调用时直接挂掉报错. 问题: 测试工程师做压测,100个线程同时调用微信和XX站的接口,日志报XX站的“请求被中止: 未能创建 SSL ...

  10. Collectors.toMap不允许Null Value导致NPE

    背景 线上某任务出现报警,报错日志如下: java.lang.NullPointerException: null at java.util.HashMap.merge(HashMap.java:12 ...