Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中创建等大小列表_Python_Arrays_List - Fatal编程技术网

在Python中创建等大小列表

在Python中创建等大小列表,python,arrays,list,Python,Arrays,List,我有3张不同长度的列表 我想在较短的列表中添加“X”,并使大小等于最长列表的长度 A = [10,20,30,40,50] B = ["A", "B", "C"] C = ["X1", "X2"] 在附加“X”后,应如下所示: A = [10,20,30,40,50] B = ["A", "B", "C", "X","X"] C = ["P1", "P2", "X", "X", "X"] 我使用了下面的代码来实现它 for i, a in enumerate(A): if i <

我有3张不同长度的列表

我想在较短的列表中添加“X”,并使大小等于最长列表的长度

A = [10,20,30,40,50]
B = ["A", "B", "C"]
C = ["X1", "X2"]
在附加“X”后,应如下所示:

A = [10,20,30,40,50]
B = ["A", "B", "C", "X","X"]
C = ["P1", "P2", "X", "X", "X"]
我使用了下面的代码来实现它

for i, a in enumerate(A):
    if i < len(B):
        pass
    else:
        B.append('X')
对于枚举(a)中的i,a:
如果i

如何在python中高效地执行此操作?

计算最大长度,并为每个列表添加增量

在Python中,
List
有一个二进制运算符
+
将多个列表合并在一起,以及
*
将其自身平铺

A = [10,20,30,40,50]
B = ["A", "B", "C"]
C = ["X1", "X2"]
max_length = max(max(len(A), len(B)), len(C))
A += ['X'] * (max_length - len(A))
B += ['X'] * (max_length - len(B))
C += ['X'] * (max_length - len(C))
然后使用容器列表组织它们,以减少重复代码和更好的可扩展性

A = [10,20,30,40,50]
B = ["A", "B", "C"]
C = ["X1", "X2"]

arrays = [A, B, C]
max_length = 0
for array in arrays:
    max_length = max(max_length, len(array))

for array in arrays:
    array += ['X'] * (max_length - len(array))
结果:

print(A) # [10, 20, 30, 40, 50]
print(B) # ['A', 'B', 'C', 'X', 'X']
print(C) # ['X1', 'X2', 'X', 'X', 'X']

计算最大长度,并为每个列表添加增量

在Python中,
List
有一个二进制运算符
+
将多个列表合并在一起,以及
*
将其自身平铺

A = [10,20,30,40,50]
B = ["A", "B", "C"]
C = ["X1", "X2"]
max_length = max(max(len(A), len(B)), len(C))
A += ['X'] * (max_length - len(A))
B += ['X'] * (max_length - len(B))
C += ['X'] * (max_length - len(C))
然后使用容器列表组织它们,以减少重复代码和更好的可扩展性

A = [10,20,30,40,50]
B = ["A", "B", "C"]
C = ["X1", "X2"]

arrays = [A, B, C]
max_length = 0
for array in arrays:
    max_length = max(max_length, len(array))

for array in arrays:
    array += ['X'] * (max_length - len(array))
结果:

print(A) # [10, 20, 30, 40, 50]
print(B) # ['A', 'B', 'C', 'X', 'X']
print(C) # ['X1', 'X2', 'X', 'X', 'X']
尝试使用
max()
获取最大长度,然后将列表附加到
B
C

如果要将
X
替换为
p
,可以使用列表理解
[i.replace('X','p')替换C中的i]
来获取
['P1','P2']

>>> m=max(len(A),len(B),len(C))
>>> B+['X']*(m-len(B))
['A', 'B', 'C', 'X', 'X']
>>> [i.replace('X','P') for i in C]+['X']*(m-len(C))
['P1', 'P2', 'X', 'X', 'X']
尝试使用
max()
获取最大长度,然后将列表附加到
B
C

如果要将
X
替换为
p
,可以使用列表理解
[i.replace('X','p')替换C中的i]
来获取
['P1','P2']

>>> m=max(len(A),len(B),len(C))
>>> B+['X']*(m-len(B))
['A', 'B', 'C', 'X', 'X']
>>> [i.replace('X','P') for i in C]+['X']*(m-len(C))
['P1', 'P2', 'X', 'X', 'X']

使用
extend
方法

B.extend(['X'] * (len(A)-len(B)))

使用
extend
方法

B.extend(['X'] * (len(A)-len(B)))

编写一个函数,为您创建此函数

A = [10, 20, 30, 40, 50]
B = ["A", "B", "C"]
C = ["X1", "X2"]


def extend_with_extra_elements(*some_lists):
    max_some_lists_length = max(map(len, some_lists))
    for some_list in some_lists:
        extra_elements_count = max_some_lists_length - len(some_list)
        extra_elements = ['X'] * extra_elements_count
        yield some_list + extra_elements


A, B, C = extend_with_extra_elements(A, B, C)

足够有效的

编写功能,为您实现这一点

A = [10, 20, 30, 40, 50]
B = ["A", "B", "C"]
C = ["X1", "X2"]


def extend_with_extra_elements(*some_lists):
    max_some_lists_length = max(map(len, some_lists))
    for some_list in some_lists:
        extra_elements_count = max_some_lists_length - len(some_list)
        extra_elements = ['X'] * extra_elements_count
        yield some_list + extra_elements


A, B, C = extend_with_extra_elements(A, B, C)

足够有效

python
itertools
模块有许多漂亮的函数,适用于这种情况。例如:

>>> from itertools import izip_longest, izip
>>> A = [10, 20, 30, 40, 50]
>>> B = ["A", "B", "C"]
>>> C = ["X1", "X2"]
>>> A, B, C = (list(x) for x in (izip(*izip_longest(A, B, C, fillvalue='X'))))
>>> A
[10, 20, 30, 40, 50]
>>> B
['A', 'B', 'C', 'X', 'X']
>>> C
['X1', 'X2', 'X', 'X', 'X']

python
itertools
模块有许多非常好的函数,适用于这种情况。例如:

>>> from itertools import izip_longest, izip
>>> A = [10, 20, 30, 40, 50]
>>> B = ["A", "B", "C"]
>>> C = ["X1", "X2"]
>>> A, B, C = (list(x) for x in (izip(*izip_longest(A, B, C, fillvalue='X'))))
>>> A
[10, 20, 30, 40, 50]
>>> B
['A', 'B', 'C', 'X', 'X']
>>> C
['X1', 'X2', 'X', 'X', 'X']

您不应该使用分号,如果您不需要做任何事情-使用
pass
或只是不写此块-您不应该使用分号,如果您不需要执行任何操作,请使用
pass
或不编写此块
max
可以处理任何非空容器序列
max
可以处理任何非空容器序列