我试图将状态数组的值的长度放到单独的数组中,然后按降序排序,但是在迭代之后,我很难将字符串的所有长度值都放入数组中,而不是只有一个值。
states = ["Abia", "Adamawa", "Anambra", "Akwa Ibom", "Bauchi", "Bayelsa", "Benue", "Borno", "Cross River", "Delta", "Ebonyi", "Enugu", "Edo", "Ekiti", "Gombe", "Imo", "Jigawa", "Kaduna", "Kano", "Katsina", "Kebbi", "Kogi", "Kwara", "Lagos", "Nasarawa", "Niger", "Ogun", "Ondo", "Osun", "Oyo", "Plateau", "Rivers", "Sokoto", "Taraba", "Yobe", "Zamfara"]
for i in states:
a = [len(i)]
print(a)发布于 2018-08-20 14:08:18
由于您希望将长度按降序排序,所以将sorted与reverse=True和列表理解结合使用
states = ["Abia", "Adamawa", "Anambra", "Akwa Ibom", "Bauchi", "Bayelsa", "Benue", "Borno", "Cross River", "Delta", "Ebonyi", "Enugu", "Edo", "Ekiti", "Gombe", "Imo", "Jigawa", "Kaduna", "Kano", "Katsina", "Kebbi", "Kogi", "Kwara", "Lagos", "Nasarawa", "Niger", "Ogun", "Ondo", "Osun", "Oyo", "Plateau", "Rivers", "Sokoto", "Taraba", "Yobe", "Zamfara"]
a = sorted([len(i) for i in states], reverse=True)
print (a)输出
[11, 9, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3]为了在不诉诸NumPy数组的情况下获取排序列表的索引,有许多方法:see here。我个人更喜欢直接使用NumPy的argsort。顾名思义,它按升序返回与排序数组/列表对应的索引数组。要获得降序索引,只需使用[::-1]反转argsort返回的数组。以下是解决问题的方法:
import numpy as np
states = ["Abia", "Adamawa", "Anambra", "Akwa Ibom", "Bauchi", "Bayelsa", "Benue", "Borno", "Cross River", "Delta", "Ebonyi", "Enugu", "Edo", "Ekiti", "Gombe", "Imo", "Jigawa", "Kaduna", "Kano", "Katsina", "Kebbi", "Kogi", "Kwara", "Lagos", "Nasarawa", "Niger", "Ogun", "Ondo", "Osun", "Oyo", "Plateau", "Rivers", "Sokoto", "Taraba", "Yobe", "Zamfara"]
a = [len(i) for i in states]
indices_sorted = np.argsort(a)[::-1] # [::-1] gives you indices for decreasing order输出
array([ 8, 3, 24, 35, 19, 1, 2, 30, 5, 4, 10, 16, 17, 33, 32, 31, 22,
13, 6, 7, 9, 11, 14, 25, 23, 20, 21, 26, 27, 34, 28, 18, 0, 12,
15, 29])现在您可以看到,上面输出的第一个索引是8,这意味着states的第9个元素是Cross River。类似地,您可以访问和验证其他元素。
发布于 2018-08-20 14:06:20
您可以使用列表理解:
lengths = [len(state) for state in states]如果需要使用for循环,请创建一个列表并附加到其中:
lengths = []
for i in states:
lengths.append(len(i))发布于 2018-08-20 14:09:40
您也可以使用map函数来完成这一任务,而无需使用for循环:
a = list(map(len,states))https://stackoverflow.com/questions/51932518
复制相似问题