当您使用计数排序算法时,您将创建一个列表,并使用其索引作为键,同时添加整数出现的次数作为列表中的值。为什么这与简单地使用keys作为索引和counts作为值的字典创建不同?如:
hash_table = collections.Counter(numList)
Run Code Online (Sandbox Code Playgroud)
或者
hash_table = {x:numList.count(x) for x in numList}
Run Code Online (Sandbox Code Playgroud)
创建哈希表后,您基本上只需将整数出现的次数复制到另一个列表中。哈希表/字典的查找时间为 O(1),那么如果您只是引用键/值对,为什么这不是更可取的呢?
我在下面包含了计数排序算法以供参考:
def counting_sort(the_list, max_value):
# List of 0's at indices 0...max_value
num_counts = [0] * (max_value + 1)
# Populate num_counts
for item in the_list:
num_counts[item] += 1
# Populate the final sorted list
sorted_list = []
# For each item in num_counts
for item, count in enumerate(num_counts):
# For the number of times the item occurs
for _ in xrange(count):
# …Run Code Online (Sandbox Code Playgroud) 如果我有这样的清单:
arr = [
["Hi ", "My ", "Name "],
["Is ", "Sally. ", "Born "],
[3, 13, 2010]
]
Run Code Online (Sandbox Code Playgroud)
你怎么会在一个声明的单个字符串中得到它
H, My Name Is Sally. Born 3 13 2010
Run Code Online (Sandbox Code Playgroud)
有比这更简单的方法
example = ""
for x in range(len(arr)):
for j in range(len(arr[x])):
example = example + str(arr[x][j])
print (example)
Run Code Online (Sandbox Code Playgroud) 当给出一个字符串如
address = "12345 White House Lane"
Run Code Online (Sandbox Code Playgroud)
有没有办法确定字符串的第一个字符(上例中的"1")是数字还是字符?在我的情况下,我需要能够识别它是否是一个数字,如果是,则削减地址的数字部分(只留下街道名称).
我尝试过使用isNaN函数
if(isNaN(address[0]){
//Do this or that
}
Run Code Online (Sandbox Code Playgroud)
但我被告知它对于广泛使用来说不够可靠.还被告知我可以使用类似的正则表达式函数
if(address.matches("[0-9].*")){
//Do this or that
}
Run Code Online (Sandbox Code Playgroud)
但这似乎只是抛出我不完全理解的类型错误.
python ×2
string ×2
algorithm ×1
arrays ×1
hash ×1
javascript ×1
list ×1
parsing ×1
python-3.x ×1
sorting ×1