পাইথনের একটি তালিকাতে লুপিং


177

আমার এতে সাবলিস্ট সহ একটি তালিকা আছে। আমি 3 টি সমান দৈর্ঘ্য সহ সমস্ত উপলিস্টি মুদ্রণ করতে চাই।

আমি পাইথনে নিম্নলিখিতগুলি করছি:

for x in values[:]:
    if len(x) == 3:
        print(x)

valuesমূল তালিকা। উপরের কোডগুলি প্রতিটি মানের জন্য 3 টি সমান দৈর্ঘ্যের প্রতিটি উপলিস্ট মুদ্রণ করে x? আমি সাবলিস্টগুলি প্রদর্শন করতে চাই যেখানে length == 3কেবল একবার।

সমস্যাটি সমাধানকৃত. সমস্যাটি ইক্লিপস এডিটর নিয়ে। আমি কারণটি বুঝতে পারি না, তবে আমি আমার লুপটি চালানোর সময় এটি আমার তালিকার অর্ধেকটি প্রদর্শন করে।

আমাকে কি গ্রহনক্ষেত্রে পরিবর্তন করতে হবে?


1
আপনি কি print valuesএখানে আউটপুটটি করতে এবং প্রদর্শন করতে পারেন ? সম্পাদনা করুন: বা কেবল এটি ফাঁকা নয় তা পরীক্ষা করুন।
ব্রিগেন্ড

উত্তর:


196

এটা চেষ্টা কর,

x in mylistএর চেয়ে ভাল এবং আরও পঠনযোগ্য x in mylist[:]এবং আপনার len(x)সমান হওয়া উচিত 3

>>> mylist = [[1,2,3],[4,5,6,7],[8,9,10]]
>>> for x in mylist:
...      if len(x)==3:
...        print x
...
[1, 2, 3]
[8, 9, 10]

অথবা আপনার যদি আরও পাইথোনিক ব্যবহারের তালিকা-বোধগম্যতার প্রয়োজন হয়

>>> [x for x in mylist if len(x)==3]
[[1, 2, 3], [8, 9, 10]]
>>>

15

আপনি ভাল for x in valuesপরিবর্তে ব্যবহার করতে পারেন for x in values[:]; দ্বিতীয়টি একটি অপ্রয়োজনীয় অনুলিপি তৈরি করে। এছাড়াও, অবশ্যই এই কোডটি 3 টির পরিবর্তে 2 দৈর্ঘ্যের জন্য পরীক্ষা করে ...

কোডটির মান অনুযায়ী কেবল একটি আইটেম প্রিন্ট করে x- এবং সাবলিস্টগুলির xউপাদানগুলির উপর পুনরাবৃত্তি হয় values। সুতরাং এটি কেবল একবারে প্রতিটি সাবলিস্ট মুদ্রণ করবে।


4
মানগুলি [:] মানগুলির সমস্ত উপাদানকে টুকরো টুকরো করে ফেলেছে, তাই না? আমি ধরে নিচ্ছি যে আপনি বোঝাচ্ছেন কাটা থেকে তৈরি অস্থায়ী তালিকা। শুধু নিশ্চিত করতে চান।
ব্যাটব্র্যাট

1
অযাচিত অনুলিপি উল্লেখ করার জন্য ধন্যবাদ। @ বাতব্রত এটি টুকরো টুকরো করে না, টুকরো টুকরো করে ফেলেছে, আমার অর্থ হ'ল মানগুলি নকল হয়েছে, এবং এখনও আছে values
AsTeR

স্পষ্ট করার জন্য ধন্যবাদ।
ব্যাটব্র্যাট

14

আমি যে সমাধানটি সন্ধান করছিলাম এটি এখানে। আপনি যদি তালিকা 2 তৈরি করতে চান যা তালিকার 1-এ সংখ্যার উপাদানগুলির পার্থক্য রাখে।

list1 = [12, 15, 22, 54, 21, 68, 9, 73, 81, 34, 45]
list2 = []
for i in range(1, len(list1)):
  change = list1[i] - list1[i-1]
  list2.append(change)

মনে রাখবেন যে len(list1)11 (উপাদান) থাকা অবস্থায় len(list2)কেবল 10 টি উপাদান থাকবে কারণ আমরা তালিকা 1তে সূচক 1 দিয়ে উপাদান থেকে লুপের জন্য সূচনা 1-তে সূচী 0 সহ উপাদানটি নয় 1


সূচক 1 থেকে 0 থেকে শুরু করতে আমার যা প্রয়োজন ঠিক এটিই ছিল + 0 +1
টিমভ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.