将forloop中的值添加到数组中

2024-09-28 05:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将states数组的值的长度放入一个单独的数组中,然后按降序对它们进行排序,但是我很难将字符串的所有长度值放入数组中,而不是在迭代之后有一个值。你知道吗

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)

Tags: 字符串排序数组statescross降序akwaabia
3条回答

您可以使用列表:

lengths = [len(state) for state in states]

如果需要使用for循环,请创建一个列表并附加到其中:

lengths = []
for i in states:
    lengths.append(len(i))

也可以使用^{}函数而不使用for循环:

a = list(map(len,states))

因为您希望长度按降序排序,所以将sortedreverse=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。我个人更喜欢直接使用NumPyargsort。顾名思义,它以升序返回与排序数组/列表相对应的索引数组。要获得降序的索引,只需使用[::-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。同样,您可以访问和验证其他元素。你知道吗

相关问题 更多 >

    热门问题