一个python程序,关于二维数组,不知道怎么回事……

作者&投稿:乾阳 (若有异议请与网页底部的电邮联系)
一个关于Python二维数组的问题~

1. 先收集所有的非1"石头"元素,到一个从小到大的有序堆heap中间..
Heap stonesToRemove=collectStones(stoneTable);
2. 以起始坐标(0,0)为首个“上一个坐标”,
prevPos=(0,0);
int sumSteps=0;
3. 在依次弹出堆中的元素,
For Each stone In stonesToRemove:
3.1. 测量逐个元素和上一个坐标的最小距离,并累加统计步数总和,,
sumSteps+=measurePosition(stone, prevPos)
prevPos=stone; 以当前石头位置为新的上一位置.
4. 输出总和..
return sumSteps;
-----------
我初步的想法,加了不能运行的伪代码

在Python中,一个像这样的多维表格可以通过“序列的序列”实现。一个表格是行的序列。每一行又是独立单元格的序列。这类似于我们使用的数学记号,在数学里我们用Ai,j,而在Python里我们使用A[i][j],代表矩阵的第i行第j列。
这看起来非常像“元组的列表”(Lists of Tuples)。
“列表的列表”示例:
我们可以使用嵌套的列表推导式(list comprehension)创建一个表格。 下面的例子创建了一个“序列的序列”构成的表格,并为表格的每一个单元格赋值。
table= [ [ 0 for i in range(6) ] for j in range(6) ]print tablefor d1 in range(6):for d2 in range(6):table[d1][d2]= d1+d2+2print table123456程序的输出结果如下:
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]],
[[2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9],
[5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12]]
1234
这个程序做了两件事:创建了一个6 × 6的全0表格。 然后使用两枚骰子的可能组合的数值填充表格。 这并非完成此功能最有效的方式,但我们通过这个简单的例子来演示几项技术。我们仔细看一下程序的前后两部分。
程序的第一部分创建并输出了一个包含6个元素的列表,我们称之为“表格”;表格中的每一个元素都是一个包含6个0元素的列表。它使用列表推导式,对于范围从0到6的每一个j都创建对象。每一个对象都是一个0元素列表,由i变量从0到6遍历产生。初始化完成之后,打印输出二维全0表格。
推导式可以从里向外阅读,就像一个普通表达式一样。内层列表[ 0 for i in range(6) ]创建了一个包含6个0的简单列表。外层列表[ [...] for j in range(6) ]创建了这些内层列表的6个深拷贝。
程序的第2个部分对2个骰子的每一个组合进行迭代,填充表格的每一个单元格。这由两层嵌套循环实现,每一个循环迭代一个骰子。外层循环枚举第一个骰子的所有可能值d1。内层循环枚举第二个骰子d2。
更新每一个单元格时需要通过table[d1]选择每一行;这是一个包含6个值的列表。这个列表中选定的单元格通过...[d2]进行选择。我们将掷骰子的值赋给这个单元格,d1+d2+2。
其他示例:
打印出的列表的列表不太容易阅读。下面的循环会以一种更加可读的形式显示表格。
for row in table:
print row[2, 3, 4, 5, 6, 7]
[3, 4, 5, 6, 7, 8]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9, 10]
[6, 7, 8, 9, 10, 11]
[7, 8, 9, 10, 11, 12]
12345678910111213作为练习,读者可以试着在打印列表内容时,再打印出行和列的表头。提示一下,使用"%2d" % value字符串运算符可以打印出固定长度的数字格式。显示索引值(Explicit Index Values)。
我们接下来对骰子表格进行汇总统计,得出累计频率表。我们使用一个包含13个元素的列表(下标从0到12)表示每一个骰子值的出现频率。观察可知骰子值2在矩阵中只出现了一次,因此我们期望fq[2]的值为1。遍历矩阵中的每一个单元格,得出累计频率表。
fq= 13 * [0]for i in range(6):for j in range(6):c= table[i][j]fq[ c ] += 112345使用下标i选出表格中的行,用下标j从行中选出一列,得到单元格c。然后用fq统计频率。
这看起来非常的数学和规范。
Python提供了另外一种更简单一些的方式。
使用列表迭代器而非下标,表格是列表的列表,可以采用无下标的for循环遍历列表元素。
fq= 13 * [0]print fqfor row in table:for c in row:fq[c] += 1print fq[2:

因为这里修改的是数组a的第三个值,而数组pool只是存储了三个链接到数组a的一个二维数组。
这里有个更简单点的例子,看一下就知道了:

>>> a=[1,2,3]
>>> b=[a,[4,5,6]]
>>> print a
[1, 2, 3]
>>> print b
[[1, 2, 3], [4, 5, 6]]
>>> a[1]=10
>>> print a
[1, 10, 3]
>>> print b
[[1, 10, 3], [4, 5, 6]]
>>>

这个在Learning Python 里,关于变量的部分有介绍,隐约记得好像是讲关于“连接”的部分

你可以把a看成是指向列表所在内存空间的指针,所以四次的append(a)其实是添加了四次对同一个地址空间的引用。
如果想每次创建一个新的列表可以这么写:
pool.append(a[:]) #切片操作

因为这里修改的是数组a的第三个值,而数组pool只是存储了三个链接到数组a的一个二维数组。
这里有个更简单点的例子,看一下就知道了:

>>> a=[1,2,3]
>>> b=[a,[4,5,6]]
>>> print a
[1, 2, 3]
>>> print b
[[1, 2, 3], [4, 5, 6]]
>>> a[1]=10
>>> print a
[1, 10, 3]
>>> print b
[[1, 10, 3], [4, 5, 6]]
>>>


Python如何运行一个python程序
1、首先打开pycharm软件,我们右键单击新建一个python文件,如下图所示 2、在python文件中简单的写一点程序语句,如下图所示 3、接下来点击顶部的Run菜单,然后点击要执行的python文件,如下图所示 4、最后在底部的输出窗口就可以看到输出结果了,如下图所示 工具\/材料 pycharm ...

python入门程序?
Python入门编程(1)变量 在开始本次的学习之前,我们先运行一下Test1.py。程序输出了helloworld,下面我们再进行一些更深入的思考,当这个文件被运行时,Python都做了些什么。 Test1.py 在运行这个文件时,它的.py后缀说明这是一个Python程序,因此编译器会使用Python解释器来运行它。接着解释器会读取整个程序,并且确认其中...

Python如何运行一个python程序
方法一.使用python的解释器 安装python一般都会有一个交互式解释器 我们可以在这里直接写入运行 但如果我们将其关闭,刚才写的代码就会丢失。此时,我们新建一个文本文档,写入print 'hello world',然后将文件名改写为:hello.py。注意,后缀名是py,你的电脑要显示后缀名才可以看见 然后,我们打开解释器,...

鸡兔同笼python程序怎么写
鸡兔同笼python程序的写法如下:1、def solve_chicken_rabbit(total_num, total_legs):for chicken_num in range(total_num + 1):rabbit_num = total_num - chicken_num if 2 * chicken_num + 4 * rabbit_num == total_legs: return chicken_num, rabbit_num return None, None。2、测试...

Python一个程序多少钱(2023年最新解答)
python学习要多少钱?python学习费用一般在10000元到20000元左右,如需学习python推荐选择【达内教育】。Python程序员就业前景具体如下:从Python招聘岗位需求来看,【Python工程师】的岗位需求量巨大,并且岗位需求量还在呈现上涨的趋势。Python自身强大的优势决定其不可限量的发展前景。Python作为一种通用语言,...

40个Python入门小程序
本文提供40个Python入门小程序实例,旨在帮助初学者在实践中熟练应用Python。通过这些小项目,可以快速掌握基础语法与运算,为更高级编程打下坚实基础。下面将按序列出各实例,每个实例包含一个或多个Python代码片段,覆盖不同知识点。例子1:华氏温度转换为摄氏温度 利用Python的数学运算,实现华氏温度到摄氏...

如何用Python语言编写一个程序?
可以使用Python的循环语句和条件语句来实现这个程序。具体代码如下:result = [] # 用于存放符合条件的数 for i in range(1, 201): # 循环遍历1到200之间的所有数 if i % 19 == 0: # 判断是否能被19整除 result.append(str(i)) # 将符合条件的数转换成字符串添加到result列表...

用python编写程序?
import turtle# 创建画布并设置画笔属性canvas = turtle.Screen()canvas.bgcolor('white')turtle.pensize(10)turtle.pencolor('red')turtle.fillcolor('brown')# 绘制正方形turtle.penup()turtle.goto(-50, -50)turtle.pendown()turtle.begin_fill()for i in range(4):turtle.forward(100)turtle....

如何用python设计一个能实现添加、修改、删除、显示、退出等功能的小...
可以使用 Python 中的字典(dictionary)来实现一个简单的增删改查程序。具体实现步骤如下:创建一个空字典用于存储数据。通过循环菜单的方式,让用户可以选择添加、修改、删除、显示、退出等功能。根据用户的选择执行相应的操作,例如添加数据就让用户输入键值对,修改数据就让用户选择要修改的键和新值,删除...

python怎么运行自己编写的程序(python怎么运行自己编写的程序代码)
首先打开pycharm软件,我们右键单击新建一个python文件,如下图所示 在python文件中简单的写一点程序语句,如下图所示 接下来点击顶部的Run菜单,然后点击要执行的python文件,如下图所示 最后在底部的输出窗口就可以看到输出结果了,如下图所示 python怎么运行代码Python在执行时,首先会将.py文件中的源代码...

揭西县19311258447: Python二维数组运算 -
谷素来曲: 二维数组示例: a=[[1,2,3],[4,5,6],[7,8,9]] print a print a[0] print a[1] print a[2] print a[0][0],a[0][1],a[0][2] sum=0 for i in range(0,3):for j in range(0,3):sum=sum+a[i][j] print sum

揭西县19311258447: 如何在python3中输入二维数组? -
谷素来曲: input允许[]出现的.你再试一下: ~ $ python Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> i = input() [1,2,3] >>> i [1, 2, 3] >>> i = input() [[1,2,3],[4,5,6],[7,8,9]] >>> i [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>>

揭西县19311258447: python建造一个100行4列的二维数组,在第一行分别写入四个标题元素,从第二行开始读入数据,代 -
谷素来曲: table = [["col1","col2","col3","col4"]] for i in range(99):table.append(read_data())没有table类,你不是说就做二位数组嘛.这样就可以了..然后你的read_data每次返回一个具有4个数据的list就可以了..

揭西县19311258447: 如何用python创建一个二元数组 -
谷素来曲: Python中创建二维列表/数组,即创建一个list,并且这个list的元素还是list.可以用列表解析的方法实现.创建例子如下:2d_list = [[0 for col in range(cols)] for row in range(rows)] 其中cols, rows变量替换为你需要的数值即可,例如:2d_list = [[0 for col in range(9)] for row in range(9)]# 9*9的二维列表

揭西县19311258447: python 如何定义二维数组: 想定义一个score[][], 从score[0][0]到score[3][3],每个变量对应的值都是0 -
谷素来曲: 使用列表比如说 a=[[1,2,3],[1,6,9],[123,55,88]],a[0][0]=1.

揭西县19311258447: 给定一个二维数组.用Python设计实现算法找到一个峰值 -
谷素来曲: #include<stdio.h> int main() {int i,j,t,a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; printf("原来的数组:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } for(i=0;i<2;i++) for(j=i+1;j<3;j++) {t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;} printf("转置后的数组:\n"); for(i=0;i<3;i++) {

揭西县19311258447: python如何输入二维数组 -
谷素来曲: 也能输入吧,百用eval处理一下. # -*- coding: utf8 -*- arrayString = input('输入一度个二维数回组答:') array = eval(arrayString) print(array)输入一个二维数组:[[1,2],[3,4]][[1, 2], [3, 4]]

揭西县19311258447: Python中如何实现2维数组啊? -
谷素来曲: 没有内置的多维数组,你有几种办法,一种是嵌套使用线性容器,比如list;一种是使用第三方库,有一些数值计算库有这个东西;第三种是自己实现一个.

揭西县19311258447: python中的两个二维数组,如何让这两个二维数组在不使用循环的情况下对应项进行加减乘除运算呢? -
谷素来曲: 另外一种方法a= ... b=...python2.x[map(lambda x,y:x-y,x,y) for (x,y) in zip(a,b)]python3.x[list(map(lambda x,y:x-y,x,y)) for (x,y) in zip(a,b)]其中的lambda x,y:x-y 换成你需要的其他操作,这里用的是减法操作

揭西县19311258447: Python 从txt文件中 读取数据存入二维数组 并进行搜索查询 -
谷素来曲: op=open('xx.txt','r') list=[] for line in op:list.append(line) 这样第一行就是a[0] 要取出第一行第二个字 a[0].split(' ')[1]按空格分隔,函数名应该这个,不对你百度一下

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网