在 Python 中创建以备用 0 和 1 作为生成器的列表
Creating lists with alternate 0 and 1 as generator in Python
给定长度的列表作为输入:
list_len = 5
我们想要创建包含 1 和零的列表:
[1,0,0,0,0]
[0,1,0,0,0]
[0,0,1,0,0]
[0,0,0,1,0]
[0,0,0,0,1]
创建此类列表生成器的python方法是什么?
如果您想创建单位矩阵并进行其他数学计算,请使用 numpy
:
In [174]: import numpy as np
In [175]: np.eye(list_len)
Out[175]:
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
您可以使用以下代码执行此操作:
def generate_matrix(size):
"""Generate lists which form an eye matrix"""
for i in range(size):
# First, we create a new list with size 0s.
l = [0] * size
# At the specified position, we place a 1.
l[i] = 1
# We yield this new list.
yield l
它形成一个生成器,生成给定数量的列表,每个列表的前面都有 1。
作为列表理解:
size = 5
mIter = xrange(size)
matrixList = [[1 if i==x else 0 for i in mIter] for x in mIter]
print matrixList
创建此类列表的 Pythonic 方法是使用列表理解:
[ [ 1 if i == j else 0 for j in range(5)] for i in range(5)]
顺便说一句,generator 是 Python 中的一个特殊对象。以下是为相同列表构建生成器的方法:
def gen():
for i in range(5):
yield [ 1 if i == j else 0 for j in range(5)]
上述生成器的用法:
for l in gen():
print(l)
给定长度的列表作为输入:
list_len = 5
我们想要创建包含 1 和零的列表:
[1,0,0,0,0]
[0,1,0,0,0]
[0,0,1,0,0]
[0,0,0,1,0]
[0,0,0,0,1]
创建此类列表生成器的python方法是什么?
如果您想创建单位矩阵并进行其他数学计算,请使用 numpy
:
In [174]: import numpy as np
In [175]: np.eye(list_len)
Out[175]:
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
您可以使用以下代码执行此操作:
def generate_matrix(size):
"""Generate lists which form an eye matrix"""
for i in range(size):
# First, we create a new list with size 0s.
l = [0] * size
# At the specified position, we place a 1.
l[i] = 1
# We yield this new list.
yield l
它形成一个生成器,生成给定数量的列表,每个列表的前面都有 1。
作为列表理解:
size = 5
mIter = xrange(size)
matrixList = [[1 if i==x else 0 for i in mIter] for x in mIter]
print matrixList
创建此类列表的 Pythonic 方法是使用列表理解:
[ [ 1 if i == j else 0 for j in range(5)] for i in range(5)]
顺便说一句,generator 是 Python 中的一个特殊对象。以下是为相同列表构建生成器的方法:
def gen():
for i in range(5):
yield [ 1 if i == j else 0 for j in range(5)]
上述生成器的用法:
for l in gen():
print(l)