python基础
Posted momingQI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础相关的知识,希望对你有一定的参考价值。
for循环是对任意可迭代的对象进行遍历,例如:字符串、列表、元组、字典的keys(dict.keys 字典的键)、values(dict.values 字典的值)、items(dict.items 字典的键值对)。而对于整数值可以利用range函数使得整数变为可迭代对象(需要注意的是使用range函数后区间为左闭右开)。
while 循环语句和 for 循环语句使用 else 的区别:
- 1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
- 2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
range函数的语法为:range(start, stop[, step])
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
1 print(range(0,10,1)) 2 # 结果range(0, 10) 3 # range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。 4 print(list(range(0,10,1))) 5 # 结果[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 数值区间为左闭右开 6 print(list(range(0,10))) 7 # 结果[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 步长默认为1 8 print(list(range(10))) 9 # 结果[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 开始索引默认为0
例子: for i in range(-8,-2,2): print(i) 求i
1 for i in range(-8,-2,2): 2 print(i) 3 # 结果 4 # -8 5 # -6 6 # -4
简单例子:
1 # 输出 9*9 乘法口诀表。 2 for i in range(1,10): 3 for j in range(1,i+1): 4 print(‘%d*%d=%d‘%(j,i,i*j),end=‘ ‘) 5 print()
1 # 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 2 # 兔子的规律为数列1,1,2,3,5,8,13,21.... 3 list1 = [] 4 for i in range(1,13): 5 if i in (1,2): 6 list1.append(1) 7 else: 8 list1.append(list1[i-2]+list1[i-3]) 9 print(list1)
1 # 判断101-200之间有多少个素数,并输出所有素数。 2 # 素数只能被1或它本身整除 3 import math 4 num=0 5 flag = True 6 for i in range(101,200): 7 number = int(math.sqrt(i))+1 8 for j in range(2,number): 9 if i % j == 0: 10 flag = False 11 break 12 else: 13 flag =True 14 if flag: 15 num+=1 16 print(i) 17 print(num)
1 # 打印出所有的"水仙花数", 2 # 所谓"水仙花数"是指一个三位数, 3 # 其各位数字立方和等于该数本身。 4 # 例如:153是一个"水仙花数", 5 # 因为153=1的三次方+5的三次方+3的三次方。 6 7 for i in range(100,1000): 8 hundreds=i // 100 9 ten = i%100//10 10 bits = i%10 11 12 if (hundreds**3 + ten**3 + bits**3) ==i: 13 print(‘是素数>>‘,i)
enumerate函数
常见排序方法:
1 import random 2 list1 = [random.randint(1,100) for i in range(100)] 3 for i in range(len(list1)):#从小到大 4 for j in range(i,len(list1)): 5 if list1[i]>list1[j]: 6 list1[i],list1[j]=list1[j],list1[i] 7 print(list1) 8 for i in range(len(list1)):#从大到小 9 for j in range(i,len(list1)): 10 if list1[i]<list1[j]: 11 list1[i],list1[j]=list1[j],list1[i] 12 print(list1)
1 import random 2 list1 = [random.randint(1,100) for i in range(100)] 3 4 for i in range(1,len(list1)): 5 for j in range(i,0,-1): 6 if list1[j]>list1[j-1]: 7 list1[j-1], list1[j] = list1[j], list1[j-1] 8 print(list1)
1 import random 2 list1 = [random.randint(1,100) for i in range(100)] 3 4 for i in range(len(list1)): 5 min_ = i 6 for j in range(i+1,len(list1)): 7 if list1[min_] > list1[j]: 8 min_ = j 9 list1[min_],list1[i]=list1[i],list1[min_] 10 print(list1)
1 import random 2 list1 = [random.randint(0,1000) for i in range(1000)] 3 def kuaipai(list1): 4 if len(list1) < 5: 5 return list1 6 else: 7 start = list1[0] 8 first_lists = [i for i in list1[1:] if i<start] 9 mind_lists = [i for i in list1 if i == start] 10 second_lists = [i for i in list1[1:] if i>start] 11 return kuaipai(first_lists) + mind_lists + kuaipai(second_lists) 12 print(kuaipai(list1)[-5:]) 13 print(kuaipai(list1))
1 def swap(a, b): # 将a,b交换 2 temp = a 3 a = b 4 b = temp 5 return a,b 6 7 def sift_down(array, start, end): 8 9 while True: 10 11 # 当列表第一个是以下标0开始,结点下标为i,左孩子则为2*i+1,右孩子下标则为2*i+2; 12 # 若下标以1开始,左孩子则为2*i,右孩子则为2*i+1 13 left_child = 2*start + 1 # 左孩子的结点下标 14 # 当结点的右孩子存在,且大于结点的左孩子时 15 if left_child > end: 16 break 17 18 if left_child+1 <= end and array[left_child+1] > array[left_child]: 19 left_child += 1 20 if array[left_child] > array[start]: # 当左右孩子的最大值大于父结点时,则交换 21 array[left_child], array[start] = swap(array[left_child], array[start]) 22 23 start = left_child # 交换之后以交换子结点为根的堆可能不是大顶堆,需重新调整 24 else: # 若父结点大于左右孩子,则退出循环 25 break 26 27 print(">>", array) 28 29 30 def heap_sort(array): # 堆排序 31 # 先初始化大顶堆 32 first = len(array)//2 -1 # 最后一个有孩子的节点 33 # 第一个结点的下标为0 34 for i in range(first, -1, -1): # 从最后一个有孩子的节点开始往上调整 35 print(array[i]) 36 sift_down(array, i, len(array)-1) # 初始化大顶堆 37 38 print("初始化大顶堆结果:", array) 39 # 交换堆顶与堆尾 40 for head_end in range(len(array)-1, 0, -1): # start stop step 41 array[head_end], array[0] = swap(array[head_end], array[0]) # 交换堆顶与堆尾 42 sift_down(array, 0, head_end-1) # 堆长度减一(head_end-1),再从上往下调整成大顶堆 43 44 45 46 if __name__ == "__main__": 47 array = [16, 7, 3, 20, 17, 8] 48 print(array) 49 heap_sort(array) 50 print("堆排序最终结果:", array)
以上是关于python基础的主要内容,如果未能解决你的问题,请参考以下文章