❶ python 数组和列表的区别
python没有数组,只有元组(tuple)和列表(list)。
元组与列表最大的不同在于,元组一旦创建便不可改变,
因此不像列表,元组不能够在末尾追加(append)元素,弹出(pop)元素,
只能对元组中的元素进行索引t[0],不能对其中的元组进行赋值t[0]=8。
使用元组的好处在于对元组进行操作更为高效,适合存放一组常量。
❷ python中的a in b for a in c如何理解
我很理解你的疑惑,我相信这个对任何一个第一次接触到这种写法的人都有疑惑,不过我已经明白它的执行顺序,其实最容易明白的就是写一个等效写法,“a in b for b in c”的写法跟“x for x in y”的写法并没有本质上的区别,只不过前者输出的b又作为“in”的参数继续运算一次而已(同理它还可以是其它运算,未必是a in b,只不过现在它是一个列表,如果c是一维的列表,那循环一次出来的b就是单个元素,假设它是数字,那就可以执行比如b+1 for b in c这种操作),这种一般都用于生成一个列表,说再多不如举个例子(以下例子皆为实测通过):
```
#二维数组(在python中这个叫列表)
c=[[7,8,9],[1,2,3],[4,5,6]]
#简易写法,结果:[7,8,9,1,2,3,4,5,6]
l1=[aforbincforainb]
print(l1)
#常规写法(相当于上边的简易写法),结果:[7,8,9,1,2,3,4,5,6]
l2=[]
forbinc:
forainb:
l2.append(a)
print(l2)
#上述的a还可以作为参数继续传入其它函数或在表达式中使用,比如作为in的参数,结果:[False,True,False]
#解释一下执行顺序:先执行forin,循环一次就出来一个b,然后再执行numinb,numinb的结果(True/False)作为列表的
#一个元素,至此一个循环结束,然后又开始下一个forin循环,直到所有元素循环完,最后产生一个元素值为True/False组成的列表!
num=3
l3=[numinbforbinc]
print(l3)
#上面写法相当于
l4=[]
forbinc:
l4.append(numinb)
print(l4)
#a在表达式中参与表达式运算
#结果:[8,9,10,2,3,4,5,6,7]
l5=[a+1forbincforainb]
print(l5)
#该写法是上述写法的常规写法
l6=[]
forbinc:
forainb:
l6.append(a+1)
print(l6)
```
提交答案后,发现网络会把空格缩进全都去掉,而缩进作为python的灵魂,没有了缩进的python代码根本没办法运行,所以我给你截个图,你复制代码后自己去缩进吧:
python的一种写法:a in b for b in c
又一次修改答案,这次我要吐槽一下,不要来这里问关于代码的问题,前面的代码你也看到了,网络知道根本无法嵌入代码,直接把代码当普通文本,空格缩进全给你去掉,然后我想着,好,文本的空格被你去掉我上传图片总行了吧?结果,这图片被压缩的模糊不清,勉强能看见,将就着看吧。
❸ python中如何使用二维数组
在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:
❹ python 如何定义动态二维数组
追加字符串行表主要的二维列表。由于多维名单基本上列出清单,一个两维的名单将代表一个单一的清单,其中包含其他列表。 .,因为Python列表是动态的,首先你可以使用“追加”功能容易添加和删除其他列表: