python练习2020/7/14

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'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值