在我的列表" A"我有数字和' ',所以我想列出一个名为eg" b"的列表,每个列表应该有9个号码(如果可能的话),无论它有多少' &#39 ;. 知道怎么做吗?
A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17']
B = [ ['1', '3, '4', '5', '7', '8', '9', ' ', '13', '16'], ['3', ' ', '5', '17'] ]
答案 0 :(得分:0)
这将对您有所帮助:
>>> a = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17']
>>> b=[a[i:i+9] for i in xrange(0,len(a),9)]
>>> b
[['1', '3', '4', '5', '7', '8', '9', ' ', '13'], ['16', '3', ' ', '5', '17']]
>>>
答案 1 :(得分:0)
这可以通过两个嵌套的while循环来完成:
>>> A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17']
>>> B = []
>>> while A:
... L = []
... c = 0
... while A and c < 9:
... L.append(A.pop(0))
... if L[-1].isdigit():
... c += 1
... B.append(L)
...
>>> B
[['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16'], ['3', ' ', '5', '17']]
外部循环,而A不为空,内部循环,而A不为空,并且附加到当前子列表的仅数字字符串的数量小于9.计数器仅在由字符串组成的字符串后递增只找到数字。
答案 2 :(得分:0)
值得您花时间深入了解列表理解
并且Python 3.x中没有xrange,或者更确切地说范围(在3.x中)与xrange在Python 2.x中所做的完全相同。
A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17']
B = [i for i in A[0:9]] #is cleaner.
虽然我不确定你的目标是什么。你想要第二个列表(我想到的剩余列表)在同一个变量中吗?因此,如果列表中有28个元素,则需要三个列表9和一个列表1?
答案 3 :(得分:0)
这是一个有点脏的解决方案,但我认为你可能需要检查isdigit part和pop。
def take(lst, n):
if not lst:
return ValueError("Empty list, please check the list.")
items = list(lst)
new_list = []
count = 0
while items:
item = items.pop(0)
new_list.append(item)
if item.isdigit():
count += 1
if count >= n:
yield new_list
new_list = []
count = 0
if new_list:
yield new_list
A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17']
B = [ii for ii in take(A, 9)]
#[['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16'], ['3', ' ', '5', '17']]
检查以下内容: