Ro'yxatni ma'lum miqdordagi replikatsiya qilish

Ro'yxatni 1000 martadan ko'prok nusxalashni xohlayman, keyin esa katta ro'yxatga qo'shiladi.

Masalan:

a = ['1','2','3','4]

Ushbu ro'yxatni replikatsiya qilganda va keyin uni yuz marta joylashtirishda:

output = [['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4].....]

Hozirgacha faqatgina * 2 ni ko'rmoqchiman.

1
[A] * 5 ... ni sinab ko'ring
qo'shib qo'ydi muallif Paul Panzer, manba
Sublistlarning mustaqil bo'lishini xohlaysizmi yoki ularning barchasi bir a ro'yxatiga murojaat qilishlarini xohlaysizmi? output [1] = '5' ni ishlatsangiz [['1', '5', ' '3', '4'], ['1', '5', '3', '4'], ['1', '5', '3', '4'], ...]/kodi>?
qo'shib qo'ydi muallif PM 2Ring, manba

6 javoblar

Ro'yxatni osongina takrorlashingiz mumkin.

a = ['1','2','3','4']
output = [a]*1000

Yuqorida ko'rsatilgan ma'lumotnoma yaratiladi. Agar alohida nusxa kerak bo'lsa, quyidagilarni bajaring.

a = ['1','2','3','4']
output = [a[:] for i in range(1000)]
4
qo'shib qo'ydi

Bunday holatda [a] * 2 dan foydalaning. Shuni unutmangki, * operatori sizning asosiy ob'ektingizga ko'p mos yozuvlar yaratadi, chunki bu o'zgaruvchan ob'ekt. Buning o'rniga sizning asosiy ob'ektingizning alohida nusxalarini beradigan itertools.repeat() dan foydalanishingiz mumkin bo'lgan yana bir pythonik usul:

In [2]: from itertools import repeat

In [5]: a = ['1','2','3','4']

In [6]: list(repeat(a, 4))
Out[6]: 
[['1', '2', '3', '4'],
 ['1', '2', '3', '4'],
 ['1', '2', '3', '4'],
 ['1', '2', '3', '4']]
3
qo'shib qo'ydi

Siz juda yaqinsiz. Agar a * 2 sizga [1, 2, 3, 4, 1, 2, 3, 4] berishi mumkin bo'lsa, o'sha operatorni ishlatish uchun foydalanish mumkin kerakli natija. Faqat tarkibni takrorlaymiz, shuning uchun [a] * 2 ni sinab ko'ring.

1
qo'shib qo'ydi

Tushunishni tushuntiring

>>> b = [a for i in range(3)]
>>> b
[['1', '2', '3', '4'], ['1', '2', '3', '4'], ['1', '2', '3', '4']]

You can do various such operations over lists. Check this link here

0
qo'shib qo'ydi

Mening tushunchamga muvofiq, kelajakda ba'zi operatsiyalarni amalga oshirish uchun bir xil moslamani ishlatmasdan ro'yxatni takrorlashingiz kerak.

n-replikatsiya ro'yxatini o'z ichiga olgan ro'yxat yaratish uchun ushbu kodni sinab ko'ring

import copy
a = [1,2,3,4]
n = 1000
def replicateMaster(n, a):
    output= []
    while n != 0:
        n -= 1
        output.append(copy.deepcopy(a))
    return output

Yoki shunchaki ushbu stsenariyni ishlatish kerak:

import copy
a = [1,2,3,4]
n = 1000
output = [copy.deepcopy(a) for i in range(n)]

umid qilamanki, ushbu kod sizning muammoingizni hal qilmoqda

0
qo'shib qo'ydi

harakat qilib ko'ring

output = print([a]*no_of_count)
0
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming