① python 字典是按照什麼排序的
按hash表內的順序排。其實是有順序的,但是一直假裝沒有順序。如果需要有順序的字典就用ordereddict
② Python三劍客閱讀順序
Python三劍客閱讀順序為Numpy,Pandas,Matplotlib。
因為Numpy與Padas都是基於數據本身進行操作,但不具備可視化能力,而Matplotlib能將數據進行可視化,更直觀的呈現出來,所以要先閱讀前兩個,而Numpy相對Pandas簡單些,所以第一個閱讀。
NumPy系統是Python的一種開源的數值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nestedliststructure)結構要高效的多(該結構也可以用來表示矩陣(matrix)。一個用python實現的科學計算包。
③ python 編程的順序問題
不知你有沒有其他的編程語言的經驗。
Python的語言靈活性很強,你可以選擇一本Python入門教材,安裝好Python後,按著教材的順序邊學邊練習。
當有一定程度的了解後,你可以試著給自己出個題,比如「猜數字游戲」這類的題目。
或者可以嘗試多寫一些小工具。
對於任何語言,邊學變練才是最重要的
④ Python函數的調用順序
定義的順序是 i,year,month 這就是形參的順序調用的時候 給實參 也必須是這個順序
⑤ python按從小到大的順序輸出
x=int(input('x='))
y=int(input('y='))
z=int(input('z='))
if x>y:
x,y=y,x
if x>z:
x,z=z,x
if y>z:
y,z=z,y
print(x,y,z)
⑥ 怎樣用python將數組里的數從高到低排序
1、首先我們定義一個列表輸入一串大小不一的數字。
⑦ python順序表
系統在開始使用之前先進行初始化功能,判斷students.txt文件中是否保存的有學生的信息,如果有就把文件的內容讀取出來,供接下來的操作使用,如用沒有就初始化一個空的列表,用來保存用戶的輸入,程序中接下來的所有數據都會保存在該列表中相當與一個數據緩沖區。
首先是打開文件操作,對文件中的內容進行讀取操作,由於在文件中保存的內容是由空格進行分割的,並且每一個學生的信息都佔用一行,首先讀出所有的內容,先進行按照換行進行分割,得到每個人的信息,然後再對每個人的信息進行安裝空格分隔,得到每個人的詳細信息包括用戶的姓名,學號,成績。
1. def Init(stulist): #初始化函數
2. print "初始化......"
3. file_object = open('students.txt', 'r')
4. for line in file_object:
5. stu = Student()
6. line = line.strip("\n")
7. s = line.split(" ")
8. stu.ID = s[0]
9. stu.name = s[1]
10. stu.score = s[2]
11. stulist.append(stu)
12. print "初始化成功!
這部分代碼是按照學生成績的高低進行排序,在實現的時候,首先是把所有人的成績放到一個列表裡面然後使用插入排序,按照成績的大小對StuList中保存的學生信息的地址進行排序
def Sort(stulist): #按學生成績排序
Stu = []
sum_count = []
for li in stulist:
temp = []
temp.append(li.ID)
temp.append(li.name)
temp.append(int(li.score1))
temp.append(int(li.score2))
temp.append(int(li.score3))
temp.append(int(li.sum))
sum_count.append(int(li.sum))
Stu.append(temp)
#print sum_count
#print Stu;
#print stulist
insertSort(sum_count, stulist)
#print stulist;
display(stulist)
def insertSort(a, stulist):
for i in range(len(a)-1):
#print a,i
for j in range(i+1,len(a)):
if a[i]<a[j]:
temp = stulist[i]
stulist[i] = stulist[j]
stulist[j] = temp
⑧ python幾種經典排序方法的實現
class SortMethod:
'''
插入排序的基本操作就是將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據,演算法適用於少量數據的排序,時間復雜度為O(n^2)。是穩定的排序方法。
插入演算法把要排序的數組分成兩部分:
第一部分包含了這個數組的所有元素,但將最後一個元素除外(讓數組多一個空間才有插入的位置)
第二部分就只包含這一個元素(即待插入元素)。
在第一部分排序完成後,再將這個最後元素插入到已排好序的第一部分中。
'''
def insert_sort(lists):
# 插入排序
count = len(lists)
for i in range(1, count):
key = lists[i]
j = i - 1
while j >= 0:
if lists[j] > key:
lists[j + 1] = lists[j]
lists[j] = key
j -= 1
return lists
'''
希爾排序 (Shell Sort) 是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因 DL.Shell 於 1959 年提出而得名。
希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至 1 時,整個文件恰被分成一組,演算法便終止。
'''
def shell_sort(lists):
# 希爾排序
count = len(lists)
step = 2
group = count / step
while group > 0:
for i in range(0, group):
j = i + group
while j < count:
k = j - group
key = lists[j]
while k >= 0:
if lists[k] > key:
lists[k + group] = lists[k]
lists[k] = key
k -= group
j += group
group /= step
return lists
'''
冒泡排序重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
'''
def bubble_sort(lists):
# 冒泡排序
count = len(lists)
for i in range(0, count):
for j in range(i + 1, count):
if lists[i] > lists[j]:
temp = lists[j]
lists[j] = lists[i]
lists[i] = temp
return lists
'''
快速排序
通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列
'''
def quick_sort(lists, left, right):
# 快速排序
if left >= right:
return lists
key = lists[left]
low = left
high = right
while left < right:
while left < right and lists[right] >= key:
right -= 1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left += 1
lists[right] = lists[left]
lists[right] = key
quick_sort(lists, low, left - 1)
quick_sort(lists, left + 1, high)
return lists
'''
直接選擇排序
第 1 趟,在待排序記錄 r[1] ~ r[n] 中選出最小的記錄,將它與 r[1] 交換;
第 2 趟,在待排序記錄 r[2] ~ r[n] 中選出最小的記錄,將它與 r[2] 交換;
以此類推,第 i 趟在待排序記錄 r[i] ~ r[n] 中選出最小的記錄,將它與 r[i] 交換,使有序序列不斷增長直到全部排序完畢。
'''
def select_sort(lists):
# 選擇排序
count = len(lists)
for i in range(0, count):
min = i
for j in range(i + 1, count):
if lists[min] > lists[j]:
min = j
temp = lists[min]
lists[min] = lists[i]
lists[i] = temp
return lists
'''
堆排序 (Heapsort) 是指利用堆積樹(堆)這種數據結構所設計的一種排序演算法,它是選擇排序的一種。
可以利用數組的特點快速定位指定索引的元素。堆分為大根堆和小根堆,是完全二叉樹。大根堆的要求是每個節點的值都不大於其父節點的值,即 A[PARENT[i]] >= A[i]。
在數組的非降序排序中,需要使用的就是大根堆,因為根據大根堆的要求可知,最大的值一定在堆頂。
'''
# 調整堆
def adjust_heap(lists, i, size):
lchild = 2 * i + 1
rchild = 2 * i + 2
max = i
if i < size / 2:
if lchild < size and lists[lchild] > lists[max]:
max = lchild
if rchild < size and lists[rchild] > lists[max]:
max = rchild
if max != i:
lists[max], lists[i] = lists[i], lists[max]
adjust_heap(lists, max, size)
# 創建堆
def build_heap(lists, size):
for i in range(0, (size/2))[::-1]:
adjust_heap(lists, i, size)
# 堆排序
def heap_sort(lists):
size = len(lists)
build_heap(lists, size)
for i in range(0, size)[::-1]:
lists[0], lists[i] = lists[i], lists[0]
adjust_heap(lists, 0, i)
'''
歸並排序是建立在歸並操作上的一種有效的排序演算法,該演算法是採用分治法 (Divide and Conquer) 的一個非常典型的應用。將已有序的子序列合並,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合並成一個有序表,稱為二路歸並。
歸並過程為:
比較 a[i] 和 a[j] 的大小,若 a[i]≤a[j],則將第一個有序表中的元素 a[i] 復制到 r[k] 中,並令 i 和 k 分別加上 1;
否則將第二個有序表中的元素 a[j] 復制到 r[k] 中,並令 j 和 k 分別加上 1,如此循環下去,直到其中一個有序表取完,然後再將另一個有序表中剩餘的元素復制到 r 中從下標 k 到下標 t 的單元。歸並排序的演算法我們通常用遞歸實現,先把待排序區間 [s,t] 以中點二分,接著把左邊子區間排序,再把右邊子區間排序,最後把左區間和右區間用一次歸並操作合並成有序的區間 [s,t]。
'''
def merge(left, right):
i, j = 0, 0
result = []
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result
def merge_sort(lists):
# 歸並排序
if len(lists) <= 1:
return lists
num = len(lists) / 2
left = merge_sort(lists[:num])
right = merge_sort(lists[num:])
return merge(left, right)
'''
基數排序 (radix sort) 屬於「分配式排序」 (distribution sort),又稱「桶子法」 (bucket sort) 或 bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些「桶」中,藉以達到排序的作用,基數排序法是屬於穩定性的排序。
其時間復雜度為 O (nlog(r)m),其中 r 為所採取的基數,而 m 為堆數,在某些時候,基數排序法的效率高於其它的穩定性排序法。
'''
import math
def radix_sort(lists, radix=10):
k = int(math.ceil(math.log(max(lists), radix)))
bucket = [[] for i in range(radix)]
for i in range(1, k+1):
for j in lists:
bucket[j/(radix**(i-1)) % (radix**i)].append(j)
del lists[:]
for z in bucket:
lists += z
del z[:]
return lists
---------------------
作者:CRazyDOgen
來源:CSDN
原文:https://blog.csdn.net/jipang6225/article/details/79975312
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
⑨ 請教如何用python按字母順序排序英文名字但是不可以用sort函數
代碼如下:
list = ['banana', 'apple', 'orange', 'blueberry', 'watermelon', 'strawberry', 'mango']
print(list)
list.sort()#根據字母順序排序
print(list)#['apple', 'banana', 'blueberry', 'mango', 'orange', 'strawberry', 'watermelon']
list.sort(reverse = True) #根據字母相反順序排序
print(str(list) + "
")#['watermelon', 'strawberry', 'orange', 'mango', 'blueberry', 'banana', 'apple']
(9)python的順序擴展閱讀
sorted()函數四種重要的特性:
1、sorted()函數不需要定義。它是一個內置函數,可以在標準的Python安裝中使用。
2、在沒有額外的參數的情況下,sorted()函數按照升序對值進行排列,也就是按照從小到大的順序。
3、原始的numbers不會改變,因為sorted()函數提供了一個新的有序的輸出結果,並且不改變原始值的順序。
4、當sorted()函數被調用時,它會提供一個有序的列表作為返回值。
最後一點意味著列表可以使用sorted()函數,並且輸出結果可以立刻賦值給一個變數。
⑩ python 方法執行順序問題
執行順序都是從左到右,letterGIrls是字典,setdefault方法如果是不存在girl[0]返回的是空列表[],存在的話返回的是[girl],然後是列表的append方法。這段代碼的目的是把girl[0]相同的girl合並到一個列表。