我需要迭代一个循环列表,可能多次,每次从最后访问的项目开始.
用例是连接池.客户端请求连接,迭代器检查指向的连接是否可用并返回它,否则循环直到找到可用的连接.
有没有一种巧妙的方法在Python中做到这一点?
我想写一个复活列表的函数,[1,5,3,6,...]
并[1,1,5,5,3,3,6,6,...]
想知道如何做到这一点?谢谢
我有一个listPython:
l = ['a', 'c', 'e', 'b']
Run Code Online (Sandbox Code Playgroud)
我想立即复制原件旁边的每个元素.
ll = ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b']
Run Code Online (Sandbox Code Playgroud)
应保留元素的顺序.
我有以下字符串列表:
l1 = ['one','two','three']
Run Code Online (Sandbox Code Playgroud)
我想获得一个列表,例如,这些相同的元素重复了n多次。如果n=3我得到:
l2 = ['one','one','one','two','two','two','three','three','three']
Run Code Online (Sandbox Code Playgroud)
我正在尝试的是这样的:
l2 = [3*i for i in l1]
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
l2 = ['oneoneone','twotwotwo','threethreethree']
Run Code Online (Sandbox Code Playgroud)
如果我试试这个:
l2 = [3*(str(i)+",") for i in l1]
Run Code Online (Sandbox Code Playgroud)
我获得:
l2 = ['one,one,one','two,two,two','three,three,three']
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
所以我有一个列表[a,b,c]并且我想获取[a,b,c,a,b,c,...a,b,c].
我当然可以用两个嵌套循环来做到这一点,但一定有更好的方法吗?itertools.cycle()如果我能提供一个计数,这将是解决方案。
两个限制:
假设我有列表
l = ['a', 'c', 'b']
Run Code Online (Sandbox Code Playgroud)
我想要的是一个列表,其中这些元素一个接一个出现两次,所以
['a', 'a', 'c', 'c', 'b', 'b']
Run Code Online (Sandbox Code Playgroud)
我想以最 Pythonic 的方式做到这一点。
我的一半解决方案是做类似的事情
[[l[i], l[i]] for i in range(len(l))]
Run Code Online (Sandbox Code Playgroud)
这产生
[['a', 'a'], ['c', 'c'], ['b', 'b']]
Run Code Online (Sandbox Code Playgroud)
从这里开始,我必须解析(遍历)列表以删除内部列表并获得单个平面列表。
有没有人有更好的主意一次性做到这一点?显然,像l * 2这样的事情无济于事['a', 'c', 'b', 'a', 'c', 'b'],我想要相邻的相同元素。
我有一个数字列表:
numbers = [1, 2, 3, 4].
我想有一个列表,他们重复这样的n时间(for n = 3):
[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4].
问题是我只想用itertools它,因为我的性能受到很大限制.
我试着用这个表达式:
list(itertools.chain.from_iterable(itertools.repeat(numbers, 3)))
但它给了我这样的结果:
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
这显然不是我需要的.
有没有办法itertools只使用,而不使用排序,循环和列表推导?我能得到的最接近的是:
list(itertools.chain.from_iterable([itertools.repeat(i, 3) for i in numbers])),
但它也使用列表理解,我想避免.
我有一个列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我想重复一个列表n时间。
例如,如果n = 2我要[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]作为输出。
除了appendand forloop 外,python中是否有任何内置解决方案,因为的值也n可能高达1000?
说我有这个
b = 3
l = [1, 2]
Run Code Online (Sandbox Code Playgroud)
我想修改l,以便每个元素出现的次数与b一样多.以便:
l = [1, 1, 1, 2, 2, 2]
Run Code Online (Sandbox Code Playgroud)
我用过这个:
for x in l:
for m in range(b):
l.append(x)
Run Code Online (Sandbox Code Playgroud)
但它导致了无限循环.任何帮助,将不胜感激.我希望你们给出想法而不是给我代码.谢谢.
我正在研究一个项目,我需要在列表中重复一定次数的列表.显然,L.append(L)只是再次添加元素而不创建单独的列表.我只是对如何在大列表中分开列表感到困惑.
简而言之,这就是我所拥有的:
L = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
如果我想重复一遍,比如说3次,那么我有:
L = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?我正在寻找大名单中的列表.
提前致谢.
我想将列表重复n次,同时保留列表本身的顺序。例如,我现在所拥有的一切都行不通,也没有给我一个错误。
def duplicate(testList, n):
y = 0
x = len(testList)
newList=[]
while y < x:
for z in range (0, n):
newList.append(testList[y])
y = y + 1
return newList
duplicate([1,2,3], 3)
Run Code Online (Sandbox Code Playgroud)
此后,我不确定在哪里修复它。
所需的输出是:
[1,1,1,2,2,2,3,3,3]
Run Code Online (Sandbox Code Playgroud) 我有以下一段代码,目的是将 2D 列表的每个元素重复一定次数:
empty =[]
l = [[1,2,3], [4,5,6]]
n = [2,3]
for i, _as in enumerate(l):
for _a in _as:
for _n in range(n[i]):
empty.append(_a)
empty
> [1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6]
Run Code Online (Sandbox Code Playgroud)
我想尝试用单行列表理解格式来写这个。
我尝试使用以下方法:
empty = [
[
[_a]*n[i] for _a in _as
]
for i, _as in enumerate(l)
]
empty
> [[[1, 1], [2, 2], [3, 3]], [[4, 4, 4], [5, 5, 5], [6, 6, 6]]]
Run Code Online (Sandbox Code Playgroud)
如何更正上述代码以提供所需的结果?
python ×12
list ×10
python-2.7 ×2
iteration ×1
iterator ×1
mutable ×1
nested-lists ×1
performance ×1
replication ×1