一、三元运算符
三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值
格式:[on_true] if [expression] else [on_false]
res = 值1 if 条件 else 值2
1.举例说明:
a =1
b = 2
c= a if a>1 else b #如果a大于1的话,c=a,否则c=b
 
如果不用三元运算符,就用if-else条件判断,如下:
a = 1
b = 2
if a >1:
c = a
else:
c = b
 
2.三元运算符也可以用在列表和字典中
例:1-10的数字,打印出其中的偶数
三元运算:
ss = [i for i in range(1,11) if i%2==0 ] #循环1-11间的值(不包括11),如果值能被2整除(即取偶数),就写到ss这个list中
print(ss) #最终打印结果 [2, 4, 6, 8, 10]
 
if-else条件判断
s = []
for i in range(1,11):
if i %2==0:
s.append(i)
print(s)
 
 
二、集合
集合:set持有一系列元素,和list很像,也是一种数据类型,但是set的元素没有重复,而且是无序的
特点:set不包含重复的元素(天生去重)且无序
 
2.集合的定义
a.定义一个列表,通过强制转换来定义集合
nums = [1,1,2,3,5,6,77,8]
num_set = set(nums)
b.直接定义
num_set1={1,2,3,3,4}
集合不能通过下标来访问元素
 
3.循环遍历set
s = set(['Adam', 'Lisa', 'Bart'])
for name in s:
print (name)
结果:
Lisa
Bart
Adam
 
4.添加元素
s = {1,2,3}
s.add(4)
print(s)#结果 {1, 2, 3, 4}
 
s.update([333,444,333])
s.update({56,78,999})
 
5.删除元素
s.remove(333) #删除元素,如果元素不存在就会报错
s.pop() #删除一个随机的元素,并返回删除的元素
s.discare(111) #如果删除的元素存在,删除,不存在不做处理
 
 
三、函数
1.什么是函数?
定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。
 
2.使用函数的好处
a.简化代码
b.提高代码的复用性
c.代码可扩展
 
3.python中函数定义
def functionname( parameters ): function_suite return [expression]
说明:def为关键字,后面为函数名,函数名不能重复,括号中内容为参数,根据实际情况,定义你需要的参数个数
function_suite 为 函数体
return 为返回值 如果不写return这一行的话,默认返回为None
 
4.函数调用
def hello():
print('hello!')
hello() #函数调用,函数调用的方式为,函数名后跟括号
 
5.形参和实参
函数在调用的时候,可以传入参数,有形参和实参
形参:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。
 
实参:实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。函数调用结束返回主调用函数后则不能再使用该形参变量。
 
6.函数的参数类型
函数的四种参数类型:位置参数、默认参数、不定长参数、关键字参数
位置参数:
位置参数,就是按照参数的位置来进行传参
例:
def reg(name,age):
print('hello %s,age is %s' %(name,age))#name,age是必填参数,位置参数
reg('hhf',27)
说明:有几个位置参数在调用的时候就要传几个,否则就会报错
如果有多个位置参数,但却记不住参数的位置,可以使用位置参数的名字来指定调用
具体调用为reg(name='huihui',age=25),这种调用方式叫做关键字传参
 
默认参数:
默认参数就是在定义形参的时候,给函数默认赋一个值
默认参数不是必填的,如果给默认参数传值的话,它就会使用你传入的值。如果使用默认值参数的话,必须放在位置参数后面定义
 
例:
def reg(name,age,sex='男'):
print('hello %s,age is %s' %(name,age))#name,age是必填参数,位置参数 #sex是默认值参数,不是必填参数
reg('hhf',27)#不传sex,sex使用默认值参数,sex='男'
reg('huihui',28,'女') #给sex传值,sex='女'
 
非固定参数:
上面的两种位置参数和默认参数都是参数个数是固定的
如果有一个函数,参数不是固定的,也不知道函数会扩展成啥样,可能参数越来越多,这个时候如果使用固定的参数,后面程序就不好扩展,这时候就可以用非固定参数了
非固定参数有两种,一种是可变参数,一种是关键字参数
可变参数:
可变参数用*来接收,后面想传多少个参数就传多少个,如果位置参数、默认值参数、可变参数一起使用的的话,可变参数必须在位置参数和默认值参数后面。可变参数也是非必传的。
例:
def post(*args):
print(args)
post('001','denglu','http://www.baidu.com',post,a=1)
post()
说明:可变参数,也叫参数组,也不是必填的,它接收到的是一个元组
它把调用函数时传进去的每一个参数到一个元组里
 
关键字参数:
关键字参数使用**来接收,后面的参数也是不固定的,想写多少个写多少个,当然也可以和上面的几种一起来使用,如果要一起使用的话,关键字参数必须在最后面。
使用关键字参数的话,调用的时候必须使用关键字传参,关键字参数也是非必传的
例:
def kw(**kwargs):
print(kwargs)
kw()
kw(age=18,name='aaa')
d={'age':18,'name':'aaa'}
kw(**d)
说明:关键字参数,接收的是一个字典,调用得用xx=11,也不是必填的
传入字典调用的时候就得写**{'age':18,'name':'aaa'}
 
其它例子:
def other2(name,country='china',*args,**kwargs):
print(name)
print(country)
print(args)
print(kwargs)
other2('hhf')
other2('niuhui','beijing','python','changping',user='niu')
说明:如果必填参数,默认值参数,可变参数和关键字参数要一起使用的话,
必须参照必填参数、默认值参数、可变参数和关键字参数的顺序接收,否则会报错
 
def write(filename,model,ending,user,os,money,other):
print(filename)
print(model)
print(ending)
print(user)
print(os)
print(money)
print(other)
 
write(os='Windows',user='wubing',model='w',filename='a.tx',ending='utf8',money=9999,other='xxx')
-#write(os='windows','a.txt') #位置参数调用参数必须在关键字调用前,否则报错
write('a.txt','w','gbk2312','hhf',os='windwos',money=9999,other='xxx')
 
7.函数返回值
def plus(a,b):
c=a+b
return c
说明:
a函数碰到return,立即结束这个函数
b调用完函数之后,返回计算结果
c函数可以没有返回值,如果没有返回值的话,默认返回None,如果这个函数的处理
结果我们需要在别的地方用到,就得给函数一个返回值
如果函数return多个值的话,那么它就会把多个值放到一个元组里面去
 
score1 = 50
score2 = 90
def echo():
return score1,score2
 
8.局部变量和全局变量
局部变量:在局部内生效,出了这个变量的作用域,这个变量就失效了
全局变量:在整个程序里面都生效的,在程序最前面定义的都是全局变量
-# score3 = [1,2,3,4,5]
-# score3 = {"id":1}
score3 = 100
def my_open():
fw = open('a.txt','a+')
fw.seek(0)
print('score3',score3)
d={'id':2}
d['price']=99
说明:
a.在函数里面定义变量叫局部变量,它只能在函数里面用,出了该函数外,就不能使用了
b.在函数外面定义的变量,是全局变量,在函数内也可以使用
c 如果想在函数里面修改全局变量的值,那么要先用global关键字声明
要修改全局变量是int、string的话,必须得写global
如果是字典和list的话,要修改的话,不能加global
 
 
 

Python之三元运算、集合、函数的更多相关文章

  1. python之三元运算

    三元运算(三目运算):用于较简单的判断(if   else). if True: return s = "aaaa" else: return s = "bbbb&quo ...

  2. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  3. python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

    1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

  4. python中常用的函数与库一

    1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...

  5. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  6. 如何查看Python的内置函数

    经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...

  7. python常用内置函数

    Python所以内置函数如下: 下面列举一些常用的内置函数: chr()和ord() chr()将数字转换为对应的ascii码表字母 >>> r=chr(65) >>&g ...

  8. Python学习(二):函数入门

    1.函数代码格式: def 函数名(): 函数内容 执行函数:函数名() 2.代码举例: #!/usr/bin/env python #coding=utf-8 #定义函数 def Func1(): ...

  9. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

随机推荐

  1. mongo12---手动预先分片

    手动预先分片:(每个片上的数据是不一样的,是分开存,不是做备份) 自动分片有可能短期内某个片的数据过大,硬盘不够用了.能否100000-30000就到1号片. //以shop.user表为例,先声明s ...

  2. [原创]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  3. 就是要第一个出场的albus 【BZOJ】 线性基

    就是我代码里读入之后的那一部分. 1.(一下a[]为原数组 a'[]为线性基) 线性基 中的a'[i]其实 是 原来的a[]中的某个子集(2^n个子集中的某个) 异或出来的  可能会有其他的子集与它异 ...

  4. 第十六周 Leetcode 600. Non-negative Integers without Consecutive Ones(HARD) 计数dp

    Leetcode600 很简单的一道计数题 给定整数n 求不大于n的正整数中 二进制表示没有连续的1的数字个数 在dp过程中只要保证不出现连续1以及大于n的情况即可. 所以设计按位dp[i][j]表示 ...

  5. Wireshark抓包分析TCP协议

      版权声明:本文为作者原创文章,可以随意转载,但必须在明确位置表明出处!!! 之前有一篇文章介绍了http协议「初识http协议」, http协议协议是基于tcp协议的,所以作者觉得有必要针对tcp ...

  6. bzoj4276

    线段树优化建图+费用流 朴素的做法是每个强盗直接对每个区间的每个点连边,然后跑最大权匹配,这样有5000*5000条边,肯定过不去,那么我们用线段树优化一下,因为线段树能把一个O(n)的区间划分为O( ...

  7. bzoj 1296: [SCOI2009]粉刷匠【dp+背包dp】

    参考:http://hzwer.com/3099.html 神题神题 其实只要知道思路就有点都不难-- 先对每一行dp,设g[i][j]为这行前i个格子粉刷了k次最大粉刷正确数,随便n^3一下就行 设 ...

  8. spoj 839 OPTM - Optimal Marks&&bzoj 2400【最小割】

    因为是异或运算,所以考虑对每一位操作.对于所有已知mark的点,mark的当前位为1则连接(s,i,inf),否则连(i,t,inf),然后其他的边按照原图连(u,v,1),(v,u,1),跑最大流求 ...

  9. BZOJ 1001 [BeiJing2006]狼抓兔子 (UVA 1376 Animal Run)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 24727  Solved: 6276[Submit][ ...

  10. Reshapeing operations

    Reshapeing operations Suppose we have the following tensor: t = torch.tensor([ [1,1,1,1], [2,2,2,2], ...