英文:
How to create subelements with conditions in list?
问题
Here's the translated code part you requested:
我有一个像这样的列表
a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
我试图获取一个新的列表,其中的元素在以下条件下分隔成子列表:
1-) 将序列从1到N(在这种情况下,N为3)分隔成子列表
2-) 即使在1到N之间有缺失的数字,也将序列从1到N分隔成子列表
3-) 将其余元素分隔成子列表
预期的输出如下。
b = [[3], [2], [1, 2, 3], [1, 3], [1, 2]]
我的当前尝试如下,但是它错误地关联了元素。感谢任何帮助
b = [None]*len(a)
for i in range(len(a)):
if 1 not in a[i][0]:
b[i] = [a[i]]
If you have any further questions or need assistance with this code, please let me know.
英文:
I have a list like this
a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
I'm trying to get a new list with elements separated in sublist for following conditions:
1-) Separate in sublists the sequences from 1 to N (N in this case is 3)
2-) Separate in sublists the sequences from 1 to N even there are missing numbers between 1 and N
3-) Separate in sublists the rest elements
The expected output would be like this.
b = [[3], [2], [1, 2, 3], [1, 3], [1, 2]]
My current attempt is below but is associating incorrectly the elements. Thanks for any help
b = [None]*len(a)
for i in range(len(a)):
if 1 not in a[i][0]:
b[i] = [a[i]]
答案1
得分: 1
以下是翻译好的代码部分:
理解简单的逻辑方式
# 你的列表
a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
# 你的列表的列表
finalList = []
# 临时列表
tempList = []
size = len(a)
# 逻辑
for i in range(len(a)):
if (i+1 < size) and (a[i] < a[i+1]):
tempList.append(a[i])
else:
tempList.append(a[i])
finalList.append(tempList[:]) # 没有引用。
tempList.clear()
print(finalList)
注意:我已经将代码翻译成中文,但不包括“理解简单的逻辑方式”这句话,因为这句话本身不是代码的一部分。
英文:
To understand the logic in a simple way
#YOUR LIST
a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
#YOUR LIST OF LISTS
finalList = []
#TEMPORAY LIST
tempList = []
size = len(a)
#LOGIC
for i in range(len(a)):
if (i+1 < size) and (a[i] < a[i+1]):
tempList.append(a[i])
else:
tempList.append(a[i])
finalList.append(tempList[:]) #NO REFERENCE.
tempList.clear()
print(finalList)
答案2
得分: 0
你可以在输出中的当前项目不大于输出的最后一个子列表的最后一个项目时,添加一个新的子列表:
a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
n = 3
output = []
for i in a:
if not output or not 1 <= output[-1][-1] < i <= n:
output.append([])
output[-1].append(i)
output
变成了:
[[3], [2], [1, 2, 3], [1, 3], [1, 2]]
演示:https://replit.com/@blhsing/FavoriteLargeSite
英文:
You can add a new sub-list to the output when the current item is not greater than the last item of the last sub-list of the output:
a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
n = 3
output = []
for i in a:
if not output or not 1 <= output[-1][-1] < i <= n:
output.append([])
output[-1].append(i)
output
becomes:
[[3], [2], [1, 2, 3], [1, 3], [1, 2]]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论