17.使用二分法实现在一个有序列表中查找指定的元素
lst = list(range(100))
def binary_search(arr,item):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high)//2
if arr[mid] == item:
return "%d 索引位置是: %d " %(item,mid)
elif arr[mid] > item:
high = mid - 1
elif arr[mid] < item:
low = mid + 1
print(binary_search(lst,55))
18.分离list1与list2中相同部分与不同部分
list1 = [1,2,3,4,5,0]
list2 = [1,2,5,6,7,8,9]
same_list=[]
dif_list=[]
for i in list1:
if i in list2:
same_list.append(i)
if i not in list2:
dif_list.append(i)
for i in list2:
if i not in list1:
dif_list.append(i)
print(same_list)
print(dif_list)
19.找出一个多维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点
l = [
[13,2,6,4],
[14,3,5,6],
[16,8,9,0],
[19,2,3,4]]
max_row=[]
min_col=[]
#找到最大值
for i in range(len(l)):
max_row.append(max(l[i]))
print(max_row)
#找到最小值
for i in range(len(l)):
temp=[]
for j in range(len(l[i])):
temp.append(l[j][i])#添加每列的数l[0][0],l[1][0],l[2][0],l[3][0]...到temp中
print(temp)
min_col.append(min(temp))#找到每列最小的数添加到min_col
print(min_col)
#找到最大值和最小值
for i in range(len(l)):
for j in range(len(l[i])):
if l[i][j]==max_row[i] and l[i][j]==min_col[j]: #如果l[0][0]==max_row[0],l[0][0]==min_col[0]
print('%s行%s列是鞍点'%(i,j))
else:
print('%s行%s列不是是鞍点'%(i,j))
20.写一个函数,识别输入字符串是否是符合 python 语法的变量名(不能数字开头、只能使用数字和字母以
及‘_’)
import string
def check_str(s):
if s[0] in string.digits:
return False
for i in s:
if not (i in string.ascii_letters or i in string.digits or i=='_'):
return False
else:
return True
print(check_str('_abA1433'))
print(check_str('13abc'))
print(check_str('adfdj'))
python练习2020/7/14
最新推荐文章于 2024-09-27 10:11:28 发布