- duoniu cm
1. 寫一個冒泡排序
def Bubblesort(list):
for i in range(0, len(list)-1):
for j in range(0, len(list)-1-i):
list[j] > list[j+1]
list[j],list[j+1] = list[j+1], list[j]
return list
2. 寫一個快速排序
def Quicksort(myList,start,end):
if start < end:
i,j = start,end
base = myList[i]
while i<j:
while (i<j) and (myList[j] >= base):
j -= 1
myList[i] = myList[j]
while (i<j) and (myList[i] <= base):
i += 1
myList[j] = myList[i]
myList[i] = base
Quicksort(myList,start,i-1)
Quicksort(myList,j+1,end)
return myList
3. 二分法查找(遞歸,非遞歸)
# 遞歸
def bs1(nums, target):
if not nums:
return False
middle = len(nums)//2
if nums[middle] > target:
return bs1(nums[:middle], target)
elif nums[middle] < target:
return bs1(nums[middle + 1:], target)
else:
return middle
# 非遞歸
def bs2(nums, target):
start = 0
end = len(nums)-1
while start <= end:
middle = (start+end)//2
if nums[middle] > target:
end = middle - 1
elif nums[middle] < target:
start = middle + 1
else:
return middle
return False
4. 鏈表反轉
def reverse(self,head):
if head is None:
return None
p = head
cur = None
pre = None
while p is not None:
cur = p.next
p.next = pre
pre = p
p = cur
return pre
- yunfu kj
5. 給定一個數組 a=[1,1,2,3,3,5]和一個整數n=1,找出出現大於這個整數次數的數組[1,3]
hint: 主要考察列表推導式
a = [1,1,2,3,3,5]
n = 1
b = [x for x in a if a.count(x) > n]
c = list(set(b))
print(c)
6. "get_user"轉換爲小駝峯字符串"getUser", 將"get_used_my_id"轉換爲"getUsedMyId"
hint:先把'_'去掉並把str轉爲list;將第一個單詞保持小寫;其餘單詞首字母大寫;list轉爲str
def convert(one_string, space_character):
string_list = str(one_string).split(space_character)
first = string_list[0].lower()
others = string_list[1:]
others_capital = [word.capitalize() for word in others]
others_capital[0:0] =[first]
final = ''.join(others_capital)
return final
print(convert('get_user','_')) # getUser
print(convert('get_used_my_id','_')) # getUsedMyId
7. n=4,打印出高度爲4的三角形(用*表示)
# 打印正三角
for i in range(5):
for j in range(0,5-i):
print(end=' ')
for k in range(5-i,5):
print('*',end=' ')
print('')
* * *
* * *
* * * *
- shuwang kj
8. 字符串'1.2.3.4.5'轉換爲'5|4|3|2|1'
hint: split()用法和join()用法
a = '1.2.3.4.5'
b = a.split('.')
b = b[::-1]
c = '|'.join(b)
print(c)
9. python3.x和python2.x中,import包搜索路徑順序
hint: 沒什麼區別,但在python3.3以後引入了命名空間包
其特性如下:
1.優先級最低,在已有版本所有的import規則之後;
2.要導入的文件夾中不能有__init__.py文件
3.主要依賴於sys.path中從左到右的搜索順序
當你導入一個模塊,Python 解析器對模塊位置的搜索順序是:
1、當前目錄
2、如果不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄。
3、如果都找不到,Python會察看默認路徑。UNIX下,默認路徑一般爲/usr/local/lib/python/。
模塊搜索路徑存儲在 system 模塊的 sys.path 變量中。變量裏包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。
10. python中用正則表達式匹配時間信息import re
t = '19:10:48'
m = re.match(r'(.*):(.*):(.*)', t)
print(m.groups()) # ('19', '10', '48')
t = '23:59:08'
p = re.compile(r'^(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9])$')
s = p.search(t)
print(s.groups()) # ('23', '59', '08')
11. range和xrange區別,用python仿寫一個xrange函數