繁体   English   中英

Python中的多维数组

[英]Multi dimensional array in Python

作为python中的菜鸟,我在多维数组中苦苦挣扎,我拥有这一部分

def listMembers(Members):               
    for name in Names:
        age=Ages[name]
        print (name,age)

Names = ["John","William","Sarah"] 
Ages = [22,33,44]
Members=[Names,Ages]
listMembers(Members)

并预期结果:

John, 22
Willem, 33
Sarah, 44

我必须改变什么才能得到这个?

您可以使用enumerate执行任务...

def listMembers():               
        for i,name in enumerate(Names):
            age=Ages[i]
            print (name,age)

输出-

John 22
William 33
Sarah 44

但是正如评论中所说,最好在这里使用字典

另一种方法是使用zip

def listMembers():               
    for i,j in zip(Names, Ages):
        print (i,j)

编辑:

如评论中所述,您可以在不进行直接引用的情况下完成此操作,就像在现实世界中一样,该函数将封装在另一个类中,因此您将无法直接访问数据。

def listMembers(Members):
    names = Members[0]
    ages = Members[1]
    for i, j in zip(names, ages):
        print (i, ", ", j)

您可以使用zip内置功能:

Names = ["John", "William", "Sarah"]
Ages = [22, 33, 44]

for name, age in zip(Names, Ages):
    print name, ',', age

您可以使用内置函数zip()

这将为您提供元组列表。

zipped = zip(Names, Ages)
tup_list = (list(zipped))
print (tup_list)
[('John', 22), ('William', 33), ('Sarah', 44)]

您可以将tup_list变成字典

dict(tup_list)
{'John': 22, 'Sarah': 44, 'William': 33}

其他答案显示了Python中很酷的内置快捷方式。 但是,恕我直言,您应该首先真正重新了解基础知识并走很长的路。

以下代码使用基本功能创建一个整数列表(在您的情况下为[0,1,2] ),这些整数将进行迭代以相应地对数组进行切片。 此代码假定名称和年龄具有相同数量的索引。

def listMembers(Members):
    names = Members[0] # slice off the first dimension
    ages = Members[1] # slice off the first dimension

    names_len = len(names) # get the length of names 

    for i in xrange(names_len): # xrange builds a list from 0 to given length.
        print (names[i], ages[i]) # print off the second dimension


Names = ["John","William","Sarah"]
Ages = [22,33,44]
Members=[Names,Ages]
listMembers(Members)

这是您要寻找的解决方案。 它从Members参数获取所需的所有信息,该参数可能包含任意数量的列表。 列表元素被分组,转换为字符串,并以", "并打印。 没有全局引用的NamesAges

def listMembers(Members):               
    for t in zip(*Members):
        print(", ".join(map(str, t)))

Names = ["John","William","Sarah"] 
Ages = [22,33,44]
Members=[Names,Ages]

listMembers(Members)

这是输出:

John, 22
William, 33
Sarah, 44

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM