Python 1
[[列表]]
Python支持复合赋值方式
>>> a,b = 0,1 >>> a 0 >>> b 1于是,Pyhon中,交换变量可以这样写
>>> a,b = b,a >>> a 1 >>> b 0
While循环
斐波那契数列
>>> a,b = 0,1 >>> while a <10: #注意要最后加上冒号 print(a) #缩进四格 a,b = b,a+b 0 1 1 2 3 5 8循环语句用缩进来判断循环体
Print()函数输出给定参数的值,与表达式不同
它可以处理多个参数
它输出的字符串不带引号,且各参数之间会插入一个空格————这样更有利于格式化操作
>>> i = 256*256
>>> print('The value of i is',i)
The value of i is 65536Pyhon函数会默认输出一个回车但关键字参数'end'可以取消输出后面的换行,或者用另一个字符串结尾
>>> a,b = 0,1 >>> while a <10: print(a,end=', ') a,b = b,a+b 0, 1, 1, 2, 3, 5, 8,
Pyhon有类似C++中三目运算符的语句
>>> x = 0 >>> y = 'zero' if x == 0 else 'not zero' >>> y 'zero'if语句
>>> x = int(input("Please enter an integer :")) Please enter an integer :42 >>> x 42 >>> if x < 0: x = 0 print('Negative changed to zero') elif x == 0: #不是C++中的 else if 而是elif print('zero') elif x == 1: print('single') else: print('More') Moremap函数
会根据提供的函数对指定序列做映射
用法
map(function,iterable,...)
第一个参数function对参数序列中每一个元素调用function函数,返回包含每次function函数返回值的新列表
interable 和... 为一个或多个序列
用处:
若输入为一行,例如 6 24 ,将它们分别赋值到a,b中
>>>a,b = map(int,input().split(' '))>>>def square(x)
return x ** 2
>>>map(square,[1,2,3,4,5])
[1,4,9,16,25]
for语句
Python的for语句与C或者Pascal中的不同,Pyhton的for语句不迭代算数递增数值,或是给予用户定义迭代步骤和暂停条件的能力(如C)。而是迭代列表或字符串等任意序列,元素的迭代顺序与在序列中出现的顺序一致
>>> words = ['cat','windows','defenestrate'] >>> for w in words: #python的for循环只能枚举一堆东西,不能像C++中可以用算术表达式 print(w,len(w)) cat 3 windows 7 defenestrate 12
要再遍历某个集合时修改集合的内容,应该遍历该集合的副本或创建新的集合
>>> users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}#数据结构:字典 >>> for idx in users: print(idx,users[idx]) Hans active Éléonore inactive 景太郎 active或者使用字典的函数 items()
>>> users.items() dict_items([('Hans', 'active'), ('Éléonore', 'inactive'), ('景太郎', 'active')]) >>> for key,value in users.items(): #遍历字典 print(key,value) Hans active Éléonore inactive 景太郎 active字典、集合不能边遍历边修改本身,应该遍历该集合的副本或者创建新的集合
遍历副本
>>> for user,status in users.copy().items(): #浅拷贝 if status == 'inactive': del users[user] #删除值为'inactive'的key >>> users {'Hans': 'active', '景太郎': 'active'}创建新集合
>>> active_users = {} >>> for user,status in users.items(): if status == 'active': active_users[user] = status >>> active_users {'Hans': 'active', '景太郎': 'active'}
range()函数
内置函数range()常用于遍历数字列表,该函数可以生成算数极数
>>> range(1,2) range(1, 2) >>> list(range(1,10)) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(0,10): print(i) 0 1 2 3 4 5 6 7 8 9倒叙输出
>>> list(range(9,0,-1)) [9, 8, 7, 6, 5, 4, 3, 2, 1] >>> list(range(9,0,-1)) [9, 8, 7, 6, 5, 4, 3, 2, 1] >>> list(range(9,-1,-1)) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>> list(range(9,-1)) [] >>> range(10) range(0, 10) >>> sum(range(4)) 6 >>> list(range(0,10,3)) #第三个参数为步长 [0, 3, 6, 9]注意,在向某列表赋值时,这两种方式看似没区别,实则有区别
第一种,使用range()函数
>>>a = [0 for i in range(10)] >>> a [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]第二种,使用*
>>> b = [0]*10 >>> b [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]这两种方式的不同处
>>> c = [0] >>> a = [c for i in range(10)] #a列表中的十个元素都是指向c的地址 >>> a [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]] >>> a[0][0] = 1 #c也被更改了,a列表中的所有元素也被更改了 >>> a [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] >>> c [1] >>> b = [c*10] #这种方式则不会出现上面的的情况 >>> b [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] >>> b[0][0] = 2 >>> b [[2, 1, 1, 1, 1, 1, 1, 1, 1, 1]] >>> a = [[0] for i in range(10)] #这种写法,a中的元素所指向的地址都不同 >>> a [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]] >>> a[0][0] = 1 >>> a [[1], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
**循环中的break,continue语句及else子句
示例——使用for语句与使用break,else子句
使用for语句——输出2到10 的质约数
>>> for i in range(2,10): flag = False for j in (2,i): if i % j == 0: flag = True if not flag: #注意缩进位置 print(i) 2 3 5 7使用break,else子句——输出2到10 的质约数
>>> for i in range(2,10): for j in range(2,i): if i % j == 0: break else: #注意缩进位置 print(i) 2 3 5 7
break语句和C中的类似,用于跳出最近的for或者while循环
else子句:循环语句支持else子句;for循环中,可迭代对象中的元素全部循环完时,或while循环的循环条件为假时,执行该子句;break语句终止循环时,不会执行该语句
示例
>>> for n in range(2,10): for x in range(2,n): if n %x == 0: print(n,'equals',x,'x',n//x) break else: print(n,'is a prime number') 3 is a prime number 4 equals 2 x 2 5 is a prime number 5 is a prime number 5 is a prime number 6 equals 2 x 3 7 is a prime number 7 is a prime number 7 is a prime number 7 is a prime number 7 is a prime number 8 equals 2 x 4 9 is a prime number 9 equals 3 x 3
continue语句借鉴C语言,表示继续执行下一次迭代:
>>> for num in range(2, 10): if num % 2 == 0: print("Found an even number", num) continue print("Found an odd number", num) Found an even number 2 Found an odd number 3 Found an even number 4 Found an odd number 5 Found an even number 6 Found an odd number 7 Found an even number 8 Found an odd number 9