如何从两个Python列表中创建一个不带numpy或pandas标签的二维数组?

时间:2018-07-02 00:49:18

标签: python arrays 2d

比方说,我在五个Rock,Paper和Scissors游戏中得分如下:

player_score = [1,0,1,1,0]
cpu_score = [0,1,0,0,1]

我想制作一个二维数组(不包括numpy或pandas),以记录玩过的游戏(如记分板)。因此,最终输出看起来类似于以下内容:

         G1 G2 G3 G4 G5 

Player   1  0  1  1  0 
CPU      0  1  0  0  1

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是DataFrame?

import pandas as pd
player_score = [1,0,1,1,0]
cpu_score = [0,1,0,0,1]

df = pd.DataFrame([player_score, cpu_score])
df.columns = ["G1", "G2", "G3", "G4", "G5"]
df.index = ['Player', 'CPU']

print(df)

给予

              G1  G2  G3  G4  G5
Player         1   0   1   1   0
CPU            0   1   0   0   1

答案 1 :(得分:0)

Numpy和pandas是Python编程中的强大工具,但是在没有它们的情况下尝试工作会帮助您更好地学习。它们提供了各种有用的函数和对象类,如果没有它们就可以工作,这意味着您可能必须定义自己的函数。

要显示所需的计分板,建议您定义自己的计分板类。我会给你一个这样的例子:

class ScoreBoard:
    def __init__(self):
        self.player_score = [1,0,1,1,0]
        self.cpu_score = [0,1,0,0,1]

    def __str__(self):
        string = '\t'
        for i in range(len(self.player_score)):
            string += 'G%d '%(i+1)
        string = string + '\n\nPlayer\t'
        for i in range(len(self.player_score)):
            string += '%d  '%self.player_score[i]
        string = string + '\nCPU\t'
        for i in range(len(self.cpu_score)):
            string += '%d  '%self.cpu_score[i]
        return string

    def record_score(self, player_score, cpu_score):
        self.player_score.append(player_score)
        self.cpu_score.append(cpu_score)

如果您

a = ScoreBoard()
print(a)
a.record_score(1, 0)
print(a)

,将显示:

        G1 G2 G3 G4 G5 

Player  1  0  1  1  0  
CPU     0  1  0  0  1 
        G1 G2 G3 G4 G5 G6

Player  1  0  1  1  0  1
CPU     0  1  0  0  1  0

很显然,应该做更多的工作来使此类工作顺利。

1)初始player_score和cpu_score必须为[]

2)如果计分板为空怎么办?当它为空时,您会装饰字符串输出吗?

3)是否有可能像Rock vs. Rock一样平局?如果没有,当您拥有player_score时,可以计算cpu_score。在这种情况下,不需要这两个之一。

4)也许它可以成为更多玩家较多的游戏的记分牌?

5)也许您甚至可以定义自己的带标签的2D数组,例如pandas.DataFrame?

如果您还没有学习过Python中的Object-Oreinted-Programming,您可以自由询问。您还可以在Python Programming Tutorials中了解更多信息。