python for循环

C语言和python的区别

纵然是瞬间 提交于 2019-12-06 02:50:32
Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言。本萌新也刚开始接触Python,发现Python与其他语言确实有很大的区别。Python是由C语言实现的,因此想把Python与C语言做一个简单的比较。 一、 C语言是编译型语言,经过编译后,生成机器码,然后再运行,执行速度快,不能跨平台,一般用于操作系统,驱动等底层开发。 Python是编译型还是解释型这个界限并不明显,但大致上可以理解为解释型语言,执行速度慢,由于Python虚拟机,Python是可以跨平台的,Python高度集成适合于软件的快速开发。 二、 C语言的数据类型如下图: C语言中需要事先定义变量类型,以int类型为例,当定义一个int型变量后,就会在内存中开辟4个字节,再来进行初始化,由于长度是指定的,在运算过程中需要考虑,溢出,精度等问题。 Python中的数据类型: 1.Number:数字 Int Float Bool Complex 2.String:字符串 3.List:列表 4.Tupel:元组 5.Sets:集合 6.Dictionary:字典 ython不需要事先定义变量类型,以a=3为例,在内存中存放一个整数3,然后再用变量a指向3,变量a是没有类型的

Python面试题(4)

浪子不回头ぞ 提交于 2019-12-06 00:37:25
1.Python下多线程的限制以及多进程中传递参数的方式 Python多线程有个全局解释器锁,这个锁的意思是任一时间只能有一个线程运用解释器。并发不是并行。 多进程间同享数据,能够运用multiprocession.Value和multiprocessing.Array 认真学习下multiprocessing模块 2.Python是怎样进行内存管理的 内存池的概念 3.什么是lambda函数?他有什么好处? lambda函数是一个能接纳任意多个参数并且返回单个表达式值的函数。 lambda函数不能包括指令,他们所包括的表达式不能超过一个。 不要试图想lambda函数中塞入太多东西,如果需要更复杂的东西,就定义一个一般函数。 4.怎么用Python输出一个Fibonacci数列? 基础。 5.介绍下Python中webbrowser的用法? 熟悉webbrowser模块。 6.解释下Python的and-or语法 这里需要大致知道and和or用于列表和数字之间的区别。 7.如何倒序迭代一个数组 # 通用方法 for i in range(len(l)-1, -1,-1): print(l[i]) # 内置函数reversed for i in reversed(l): print(i) 8.Python是怎样进行类型变换的 9.Python里面如何实现tuple和list的转换

Python面试题(2)

落爺英雄遲暮 提交于 2019-12-06 00:35:51
1.一行代码实现1-100的和 ? 1 2 3 print ( sum ( range ( 1 , 101 ))) #range中的参数是1<=i<101 #sum是计算参数的和    2.在函数内部改变全局变量 ? 1 2 3 4 5 6 a = 5 def foo1(): global a a = 4 foo1() print (a)    3.列出5个python标准库 time,获取时间戳,时间等。 os获取系统信息,如目录,pid。 subprocess,与linux shell交互 re,正则表达式,如match,findall,search sys,获取程序的参数,路径,退出消息等 psutil,获取系统运行状态,如cpu,mem,disk,net。 4.如何删除字典中的元素,如何更新元素的值,如何合并两个字典 ? 1 2 3 4 5 6 dictA = { 'age' : 18 , 'name' : 'jab' } del dictA[ 'age' ] #删除一个键值对 dictA[ 'name' ] = 'eric' #改变一个key的value tel = { 'tel' : '131111111' } dictA.update(tel) #将tel字典合并到dictA字典 print (dictA)    5 如何删除列表中的元素,如何将删除的元素赋值给变量

python入门基础

六月ゝ 毕业季﹏ 提交于 2019-12-06 00:04:39
#-*-coding:UTF-8 -*- num=[]; #输入三个数值,使用空格隔开 num=input("请输入三个数值:").split(' ');#此时的数值全部属于字符串形式,如果需要可以进行类型的强转 a=num[0]; b=num[1]; c=num[2]; print(a,b,c) #-*-coding:UTF-8 -*- num=int(input());#此时表示属于了一个int 类型的数值 print(type(num));#输出他所表示的类型 #类型转化的例子 a="1"; b=int(a)+1; print(b)#结果输出2(int类型) #eval()函数将字符串表达式转化成表达式进行计算得到数值 a1="1+2"; print(eval(a1));#输出的结果为3 #str()函数将数值转化成字符串 x=1;#int类型的数值 print(type(str(x)));#<class 'str'> #repr()函数将对象转化为可打印字符串 #chr()将一个整数转化为可对应的ASCII码的字符 a2=65; print(chr(a2));#A #ord()函数将一个字符串转化为对应ASCII码值 a3='A'; print(ord(a3));#65 ''' 使用hex()函数将一个整数转化为一个十六进制字符串 使用oct(

Python核心技术与实战——十九|一起看看Python全局解释器锁GIL

允我心安 提交于 2019-12-05 22:57:38
  我们在前面的几节课里讲了Python的并发编程的特性,也了解了多线程编程。事实上,Python的多线程有一个非常重要的话题——GIL(Global Interpreter Lock)。我们今天就来讲一讲这个GIL。 一个不解之谜 我们先来看一看这个例子: def CountDown(n): while n>0: n -= 1 现在,我们假设有个很大的数字n=100000000,我们来试试单线程的情况下 执行这个函数,然后看看怎么执行的 import time def main(): start_time = time.perf_counter() n = 100000000 CountDown(n) end_time = time.perf_counter() print('take {} seconds'.format(end_time-start_time)) if __name__ == '__main__': main() ##########运行结论########## take 8.2776216 seconds 这还是在我的第八代i7的笔记本上运行的结论,这时候我们想要用多线程的方式来加速,比如下面的操作 from threading import Thread n = 100000000 t1 = Thread(target=CountDown,args=[n/

python循环嵌套的几种使用方法

房东的猫 提交于 2019-12-05 22:39:56
使用循环嵌套来获取100以内的质数 使用循环嵌套来获取100以内的质数 #!/usr/bin/python # -*- coding: UTF-8 -*- num=[]; i=2 for i in range(2,100): j=2 for j in range(2,i): if(i%j==0): break else: num.append(i) print(num)    使用嵌套循环实现×字塔的实现 #!/usr/bin/python # -*- coding: UTF-8 -*- #*字塔 i=1 #j=1 while i<=9: if i<=5: print ("*"*i) elif i<=9 : j=i-2*(i-5) print("*"*j) i+=1 else : print("")    冒泡排序 #!/usr/bin/python # -*- coding: UTF-8 -*- array = [9,2,7,4,5,6,3,8,1,10] L = len(array) for i in range(L): for j in range(L-i): if array[L-j-1]<array[L-j-2]: array[L-j-1],array[L-j-2]=array[L-j-2],array[L-j-1] for i in range(L): print

Chapter2~快速入门

风流意气都作罢 提交于 2019-12-05 21:03:11
2-1 变量,print和字符串格式化操作符。启动交互式解释器,给一些变量赋值(字符串,数值 等)并通过输入变量名显示它们的值。再用print语句做同样的事。这二者有何区别?也尝试着 使用字符串格式操作符%,多做几次,慢慢熟悉它。 区别:print语句调用str()函数显示对象,而交互式解释器则调用repr()函数来显示对象。 2-2 程序输出。阅读下面的Python脚本。 #!usr/bin/env python 1 + 2 * 4 (a) 你认为这段脚本是用来做什么的? (b)你认为这段脚本会输出什么? (c)输入以上代码,并保存为脚本,然后运行它。它所做的与你的预期一样吗?为什么一样/不一样? (d)这段代码单独执行和在交互式解释器中执行有何不同?试一下,然后写出结果。 (e)如何改进这个脚本,以便它能和你想像的一样工作? (a)计算 (b)9 (c)不一样,没有输出 (d)在交互式解释器可执行 (e)在1 +2 * 4前头加上print 2-3 数值和操作符。启动交互解释器,使用Python对两个数值(任意类型)进行加、减、乘、除运算。然后使用取余操作符来得到两个数相除的余数,最后使用乘方操作符来求A数的B次方。 2-4 使用raw_input()函数得到用户输入。 (a) 创建一段脚本使用 raw_input()内建函数从用户输入得到一个字符串

python基础 生成器send方法 迭代器

允我心安 提交于 2019-12-05 20:46:58
1 from collections import Iterable 2 from collections import Iterator 3 #如上篇博客所讲,生成器可以写成如下形式,当生成器被next()调用或循环,生成器运行到yield所在语句,yield后面紧跟变量将其值赋给yield,yield将其返回 4 def str_ip(ip_start): 5 for ip1 in range(256): 6 for ip2 in range(256): 7 for ip3 in range(256): 8 ip_str_format = "%s.%s.%s.%s"%(str(ip_start), str(ip1), str(ip2), str(ip3) ) 9 yield ip_str_format 10 return "this is iter done" #迭代器中此处的return是抛异常时候的值 11 12 #函数调用将其赋给一个变量,此时这个变量就是生成器 13 str_ip_gen = str_ip(66) 14 #使用生成器的next方法来获取数据 15 for i in range(30): 16 print(str_ip_gen.__next__()) 17 18 #下面代码使用迭代器的send方法从外面传值给yield达到并行运算的效果 19 def

python基础 生成器

依然范特西╮ 提交于 2019-12-05 18:15:12
1 import time 2 #python中当我们需要一个循环体,可以使用类似下面命令生成一个有规律的列表,然后对此列表进行循环。下面的语句称为列表生成式。 3 # 当被循环列表规模很大时其需要在循环开始到整个循环结束一致占用全量内存空间,而且还有可能整个循环体只需要访问前面几个数据,此时造成空间浪费。 4 list1 = [i**2 for i in range(10)] 5 print(list1) 6 #将列表生成式的‘[]’改为‘()’即将列表生成式改为生成器,生成器只有在调用时相应的数据才会生成,不会造成内存空间预占。 7 generator1 = (i**2 for i in range(10)) 8 print(generator1) 9 for i in generator1: 10 print(i) 11 #列表的内容可以通过[index]下标获取,生成器的数据如何获取呢?通过next()方法一个一个取或者for循环一个一个取,没有别的方法。 12 generator2 = (i**2 for i in range(10)) 13 print(generator2.__next__()) #0 14 print(generator2.__next__()) #1 15 16 #当简单的列表生成式无法满足循环体数据生成规律时,我们如何使用函数生成一个生成器呢?

Day02第二天 Python基础二

被刻印的时光 ゝ 提交于 2019-12-05 18:09:53
1 #_Author_: yaoyaoba 2 #_Date_: 2019/11/25 3 4 5 # 一.索引 6 # s = 'ABCDEFGHIJ' 7 # 0123456789 #字母下面对应的数字就叫 下标(又叫索引) 8 #-------------------------------------------- 9 # 根据索引(下标),找到字符串中的某一个元素.) 10 # s = 'ABCDEFGHIJ' 11 # s1 = s[1] #根据索引(下标),找到字符串中的某一个元素. 12 # print(s1) #结果是 B 13 #-------------------------------------------- 14 # 二.字符串的切片 15 # 正取 切片规则:顾头不顾尾 格式:s1 = s[首:尾:步长] 16 # s = 'ABCDEFGHIJ' 17 # s2 = s[0:5] #取的 ABCDE 顾头不顾尾 18 # s3 = s[0:5:2] #取的 ACE 顾头不顾尾 格式:s1 = s[首:尾:步长] 19 #-------------------------------------------- 20 #倒取 切片规则:顾头不顾尾 格式:s1 = s[首:尾:步长] 21 #s = 'ABCDEFGHIJ' 22 # s4 = s[3: