我想遍历Python(3.8.5)列表,并一次将两个项目附加到列表列表中。 源列表将始终具有偶数个元素。
示例输出:
!@[User::FileWasCreatedToday]
我已经尝试过range()函数,for循环,while循环等。我正在寻求一种雄辩而有效的方法来完成此任务。以下是我使用示例数据探索的两种不正确途径。 谢谢。
[['a','b'],['c','d']['e','f'],['g','h']]
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
letter_pairs = []
count = 0
for i in range(2):
for letter in letters:
letter_pairs.append([letter, letter])
答案 0 :(得分:2)
使用邮政编码:
[list(x) for x in zip(letters[:-1:2], letters[1::2])]
答案 1 :(得分:0)
您可以将切片与skip
的{{1}}参数一起使用。
range()
现在letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
letter_pairs = []
for i in range(0, len(letters), 2):
slice_to_append = letters[i:i+2]
if len(slice_to_append) == 2: letter_pairs.append(slice_to_append)
是letter_pairs
或者,在列表理解中:
[['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h'], ['i', 'j']]
letter_pairs = [letters[i:i+2] for i in range(0, len(letters), 2) if i < len(letters) - 1]
确保if i < len(letters) - 1
始终具有两个元素。
答案 2 :(得分:0)
如果要一次在列表中添加两个项目,可以执行以下操作:
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.8.0/echarts.min.js"></script>
<div class="chart-container">
<div class="chart has-fixed-height" id="columns_basic"></div>
</div>
这是在letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
letter_pairs = []
try:
for i in range(0, len(letters),2):
letter_pairs.append([ letters[i], letters[i+1] ])
pass:
pass # or you can append the last one if you want
上进行两遍遍的遍历,每次将字母移到列表中该位置上,然后在列表中的该位置之后一个,并将其附加到letters
上。
答案 3 :(得分:0)
SetOnInsert
输出:
Inc
说明:
这里,我们在字母列表上创建了迭代器(因此没有额外的内存分配),然后将其放置在列表中两次(可能是一个元组或另一个可迭代的对象),然后使用{{1 }}模块将元素按组2进行分组。对于包含3个或更多元素的组,您可以轻松地进行相同操作-只需将from itertools import zip_longest
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
args = [iter(letters)] * 2
list(zip_longest(*args, fillvalue=None))
替换为必要的数字即可。另外,[('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h'), ('i', 'j'), ('k', None)]
可以用内置的zip_longest
函数代替,但是如果列表中没有足够的元素进行分组,它将失败。
答案 4 :(得分:0)
您可以使用迭代器来满足您的需求。
iter_ = iter(letters)
while (a := next(iter_, None)) and (b := next(iter_, None)):
letter_pairs.append([a, b])
if a: letter_pairs.append([a])
print(letter_pairs)
>>> [['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h'], ['i', 'j'], ['k']]
答案 5 :(得分:0)
源列表中的元素总是偶数,那么您使用range()
的方式应该对您有用,
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
list1= [letters[i:i+2] for i in range(0,len(letters),2)]
print(list1)
输出:
[['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h'], ['i', 'j']]