0
날짜순으로 정렬 된 목록에 게시물이 있습니다.파이썬 목록을 여러 목록으로 나눠서 각 목록을 따로 따로 섞습니다.
3 개의 그룹으로 나눠서 목록에있는 항목을 적절히 섞으 려합니다.
chunks = [posts[x:x+2] for x in xrange(0, len(posts), 2)]
이제 덩어리가 반환됩니다
[[<Post: 6>, <Post: 5>], [<Post: 4>, <Post: 3>], [<Post: 2>, <Post: 1>]]
무작위로 각 해당 목록 내부에 이러한 항목을 셔플 몇 가지 효율적인 방법은 무엇입니까?
[[<Post: 5>, <Post: 6>], [<Post: 4>, <Post: 3>], [<Post: 1>, <Post: 2>]]
이상 :
[<Post: 5>, <Post: 6>, <Post: 4>, <Post: 3>, <Post: 1>, <Post: 2>]
당신 그렇습니다. 오타 & 솔루션이 잘 작동합니다. 감사합니다! –
'sum'은 시퀀스를 연결하기위한 것이 아니며, 각 단계마다 새로운 시퀀스를 생성하므로 많은 수의 복사와 임시 작업이 필요합니다. 시퀀스를 효율적으로 연결하려면 , itertools.chain을 사용하여 (생성기로부터 새로운'list'를 생성하기 위해'list'를 감싸는'list'를 포함하고 있습니다. 'itertools import chain'에서'print (list (chain (* chunk)))'를 호출합니다. 반복되는 문자열 연결과'' '.join' 사용의 차이점입니다. – ShadowRanger
@ShadowRanger : 감사합니다. 나는 정말로 itertools에 잠수해야한다. 목록 성장률이 문자열 증가율보다 훨씬 낫지 만 당신이 맞습니다. 목록은 크기가 조정되도록 설계되었습니다. 예를 들어,'sum'은 문자열을 구성하는 것을 피하기 위해 보호되어 있습니다 :'sum ("abcdef", "")'당신이'TypeError를 얻으려고한다면 : sum() 문자열을 합칠 수 없다 [use ''.join (seq) 대신에] –