python loops_Python:复杂的forloops

代码中有很多不同的概念。让我们从最基本的开始。Pythonlists和{a2}有不同的索引方法。您还可以通过提供一个列表来构建numpy数组:S_list = [[1,2,3], [4,5,6], [7,8,9]]

S_array = np.array(S_list)

print(S_list)

print(S_array)

print(S_list[0][2]) # indexing element 2 from list 0

print(S_array[0,2]) # indexing element at position 0,2 of 2-dimensional array

这将导致:

^{pr2}$

所以对于您的第一行代码:np.array([[[S[i,j]] for i in range(order+1)] for j in range(order+1)])

通过提供一个列表,您正在构建一个numpy数组。这个列表是用list comprehension的概念构建的。因此np.array(...)方法中的代码:[[[S[i,j]] for i in range(order+1)] for j in range(order+1)]

。。。相当于:order = 2

full_list = []

for j in range(order+1):

local_list = []

for i in range(order+1):

local_list.append(S_array[i, j])

full_list.append(local_list)

print(full_list)

这将导致:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

对于第二个代码片段,需要注意的是,尽管通常numpy数组具有非常特定和常量(对于所有数组)单元格类型,但实际上可以将数据类型对象赋给numpy数组。因此,创建一个二维列表数组是可能的。也可以创建一个三维数组。两者都与索引rm[i,j][k]兼容。您可以在以下示例中进行检查:rm = np.array(["A", 3, [1,2,3]], dtype="object")

print(rm, rm[2][0]) # Acessing element 0 of list at position 2 of the array

rm2 = np.zeros((3, 3, 3))

print(rm2[0, 1][2]) # This is also valid

以下代码:[rm[i,j][k]*someFuction(name,u[i],v[j])[k] for k in range(len(rm[i,j])) if rm[i,j][k]]

。。。可以这样写:some_list = []

for k in range(len(rm[i,j])):

if rm[i, j][k]: # Expecting a boolean value (or comparable)

a_list = rm[i,j][k]*someFuction(name,u[i],v[j])

some_list.append(a_list[k])

最后一个细节是tmp+=some_list。当您将两个列表相加时,它们将被连接在一起,如下面这个简单示例所示:tmp = []

tmp += [1, 2, 3]

print(tmp)

tmp += [4, 5, 6]

print(tmp)

结果是:[1, 2, 3]

[1, 2, 3, 4, 5, 6]

还要注意,将一个列表乘以一个数字实际上等于将列表相加几次。所以2*[1,2]将产生{}。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值