【发布时间】:2020-02-25 08:11:08
【问题描述】:
解决以下问题时: “假设你有一个随机的字符串列表(例如:a、b、c、d、e、f、g),编写一个程序,按字母顺序对字符串进行排序。 你不能使用排序命令。”
我遇到了通过以下代码运行字符串的问题,这有时会让我在最终列表中出现重复的字符串
我对 python 还很陌生,我们的班级刚刚开始研究 numpy,以及该模块中的函数,我不确定代码中是否使用了任何函数(任何排序函数除外)。
import numpy as np
list=[]
list=str(input("Enter list of string(s): "))
list=list.split()
print() # for format space purposes
listPop=list
min=listPop[0]
newFinalList=[]
if(len(list2)!=1):
while(len(listPop)>=1):
for i in range(len(listPop)):
#setting min=first element of list
min=listPop[0]
if(listPop[i]<=min):
min=listPop[i]
print(min)
listPop.pop(i)
newFinalList.append(min)
print(newFinalList)
else:
print("Only one string inputted, so already alphabatized:",list2)
["a","y","z"]的预期结果
["a","y","z"]
实际结果...
输入字符串列表:a y z
一个 一种 一种 ['a', 'a', 'a']
输入字符串列表:d e c
d C d d ['c', 'd', 'd']
【问题讨论】:
-
这对于初学者来说绝对不是一件容易的事,但是您可以做一些事情。制作一个字母
letters = ['a', 'b', 'c'...]的 Numpy 数组。然后,当你得到一个字符串时,使用np.where()或np.argwhere()来获取字母的索引('a' 将是 0,'z' 将是 25)。然后,在得到两个字母的索引后,您可以确定哪个更小。如果你不需要使用 Numpy,你可以使用一个字符串来代替:letters = 'abcdef...'。然后,使用letters.find('a')获取字母的索引('b' 将是第二个位置)。再次比较索引。 -
我不确定这是否允许,但将其转换为 ascii code 并使用数字
-
他们是否希望您在此排序中使用
numpy?还是这个排序任务是你之前学过的某个单元遗留下来的?
标签: python arrays string list numpy