Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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 如何创建包含3个元素的子列表,但是如果一个子列表包含一个元素,那么如何创建包含2个元素的两个子列表?_Python - Fatal编程技术网

Python 如何创建包含3个元素的子列表,但是如果一个子列表包含一个元素,那么如何创建包含2个元素的两个子列表?

Python 如何创建包含3个元素的子列表,但是如果一个子列表包含一个元素,那么如何创建包含2个元素的两个子列表?,python,Python,下面的示例阐明了2元素子列表用例: 如果一个列表有10个元素,[a,B,C,D,E,F,G,H,I,J]我想得到4个子列表:[[a,B,C],[D,E,F],[G,H],[I,J] 提前感谢。我将执行以下功能: def partition(a): arr = np.array(a) n = len(arr) # assume that n>=3 r = n % 3 if r == 0: return list(arr.reshape(-1,

下面的示例阐明了2元素子列表用例:

如果一个列表有10个元素,
[a,B,C,D,E,F,G,H,I,J]
我想得到4个子列表:
[[a,B,C],[D,E,F],[G,H],[I,J]

提前感谢。

我将执行以下功能:

def partition(a):
    arr = np.array(a)
    n = len(arr) # assume that n>=3

    r = n % 3
    if r == 0:
        return list(arr.reshape(-1, 3))
    if r == 1:
        return list(arr[:-4].reshape(-1,3)) + list(arr[-4:].reshape(-1,2))

    # r == 2
    return list(arr[:-2].reshape(-1,3)) + [arr[-2:]]
测试:

分区(列表('ABCDEFGHIJ')) #[array(['A','B','C',dtype='怎么样:

l = list('ABCDEFGHIJ')
n = len(l)
res = [ l[(i if i < n-1 else i-1) : (i+3 if i < n-4 or i == n-3 else i+2)] for i in range(0,n,3)]
print(res)

下面是一个使用迭代器的解决方案:

L=[“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”]
N=len(L)
I=国际热核实验堆(L)
[3]*(N//3-1)+([3]如果(N%3)==0其他([2,2]如果(N%3)==1其他[3,2])]
[A'、[B'、[C']、[D'、[E'、[F']、[G'、[H']、[I'、[J']

如何确定您是否获得了
[G,H]
[I,J]
而不是
[G,H,I]
[J]
?不清楚您使用什么标准来确定如何拆分内容。如果只是一个10元素的列表,并且您希望始终得到相同的2乘以3和2乘以2元素子列表,我会说这不仅仅是一个简单的问题。我正在寻找一个单行程序。我同意您的看法,通过检查是否有单个e可以直接解决这个问题元素子列表,然后处理它。这很接近,它不适用于
l=list('ABCDEFGHI')
,它应该给出
[['A','B','C'],['D','E','F'],['G','H','I']
,这正是我在寻找的!不过我未来的自己会讨厌它的您的输出与函数实际返回的结果不匹配。假设我运行
分区(list('ABCDEFGHIJ'))
,我得到:
[array(['A','B','C',],dtype=,看起来非常优雅。
l = list('ABCDEFGHIJ')
n = len(l)
res = [ l[(i if i < n-1 else i-1) : (i+3 if i < n-4 or i == n-3 else i+2)] for i in range(0,n,3)]
print(res)
[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H'], ['I', 'J']]
[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K']]
[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K', 'L']]
[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K'], ['L', 'M']]