输出100以内的质数(1行表达式)
import math
#去掉非质数
def func_get_prime(n):
return filter(lambda x: not [x%i for i in range(2, int(math.sqrt(x))+1) if x%i ==0], range(2,n+1))
#以列表形式输出
print (list(func_get_prime(100)))
输出
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
python传参传什么
def inc(n):
print(id(n))
n=n+1
print(id(n))
n=3
print(id(n)) # 140716854243664
inc(n) # 140716854243664
# 140716854243696
print(n) # 3
a = [1,2,3]
def foo(b):
print(b is a)
b.append(4)
print(b is a)
foo(a) # 会打印出 True True
print(a) # [1,2,3,4]
def bar(c):
print(c is a)
c = [0,0,0]
print(c is a)
bar(a) # 会打印出 True False
print(a) # [1,2,3,4]
a=[1,2,3,4]
b=[i for i in a]
c=a
a.append(3)
print(a,b,c)
#输出为
[1, 2, 3, 4, 3] [1, 2, 3, 4] [1, 2, 3, 4, 3]
对于不可变对象作为函数参数,相当于C系语言的值传递;
对于可变对象作为函数参数,相当于C系语言的引用传递。
在Python中,对于不可变对象,调用自身的任意方法,并不会改变对象自身的内容,这些方法会创建新的对象并返回,保证了不可变对象本身是永远不可变的。
round()函数
- round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值
- 只有当n+1位数字是5的时候,容易混淆,如果第n位为偶数,第n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235
- 如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35
输出指定位数小数
形式
print ('%.Nf'% X ) 或者 print ( "%.Nf" % X )
print(format(X,'.Nf') 或者 '{:.Nf}'.format(X)
eg:
print('%.2f' % 10) # 10.00
print(format(10,'.2f')) # 10.00
# 或者
for i in range(99):
num_str2 = '{:.2f}'.format(i)
print(num_str2)
格式化补零方法
形式
print('%0Nd' % X)
print(format(X,'0Nd') 或者 '{:0Nd}'.format(X)
eg:
# 输出两位数,若为一位数则前面补一个零 eg:01,02,,,98
for i in range(99):
num_str = '%02d' % i
print(num_str)
for i in range(99):
num_str2 = '{:02d}'.format(i)
print(num_str2)
print(format(10,'03d')) # 010
# 数字已经转成了字符串格式
# Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
num_str1 = '123'
num_str2 = '-123'
print(num_str1.zfill(5)) # 00123
print(num_str2.zfill(5)) # -0123
控制输出浮点类型数字的位数
print('{:1.12f}'.format(12.343901))
print('{:5.2f}'.format(12.343901))
print('{:7.2f}'.format(12.343901))
输出
12.343901000000
12.34
12.34
注意:输出的是字符串格式而非浮点型
上例中 1,5,7 代表输出位数,2 代表小数点后面的位数,注意小数点本身也占一位。
12.34 总共占5位,1 < 5 ,则保持原样输出12.34,;7 > 5,则在12.34前补空格