তালিকার শেষ আইটেমটি কীভাবে মুছবেন?


146

আমার এই প্রোগ্রামটি রয়েছে যা একটি নির্দিষ্ট প্রশ্নের উত্তর দেওয়ার জন্য নেওয়া সময় গণনা করে, এবং উত্তরটি ভুল হওয়ার সময় লুপ থেকে সরে যায় তবে আমি শেষ গণনাটি মুছতে চাই, তাই আমি কল করতে পারি min()এবং এটি ভুল সময় নাও হয়, দুঃখিত যদি এটা সন্দ্বিহান.

from time import time

q = input('What do you want to type? ')
a = ' '
record = []
while a != '':
    start = time()
    a = input('Type: ')
    end = time()
    v = end-start
    record.append(v)
    if a == q:
        print('Time taken to type name: {:.2f}'.format(v))
    else:
        break
for i in record:
    print('{:.2f} seconds.'.format(i))

উত্তর:


231

যদি আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আপনি শেষ আইটেমটি বাদে সমস্ত কিছু রাখার জন্য স্লাইসিং নোটেশনটি ব্যবহার করতে পারেন:

record = record[:-1]

তবে আরও ভাল উপায় হ'ল আইটেমটি সরাসরি মুছে ফেলা:

del record[-1]

নোট 1: নোট করুন যে রেকর্ড = রেকর্ড ব্যবহার [: - 1] সত্যিই শেষ উপাদানটি সরিয়ে দেয় না, তবে সাব-লিস্টটি রেকর্ডে নিয়োগ করুন। আপনি যদি এটি কোনও ফাংশনের অভ্যন্তরে চালান এবং রেকর্ডটি প্যারামিটার হয় তবে এটি একটি পার্থক্য করে। রেকর্ড = রেকর্ডের সাথে [: - 1] আসল তালিকা (ফাংশনের বাইরে) অপরিবর্তিত, ডেল রেকর্ডের সাথে [-1] বা রেকর্ড.পপ () তালিকাটি পরিবর্তন করা হয়েছে। (মন্তব্যগুলিতে @ প্ল্টার্ডির বিবরণ অনুসারে)

দ্রষ্টব্য 2: কোডটি কিছু পাইথন আইডিয়াম ব্যবহার করতে পারে। আমি এটি পড়ার সর্বাধিক পরামর্শ
দিচ্ছি: কোডটি পাইথোনিস্টার মতো: আইডিয়োমেটিক পাইথন (ওয়েবব্যাক মেশিন সংরক্ষণাগার মাধ্যমে)।


1
দুর্দান্ত লিংক, আমি এটি আমার পিছনের পকেটে রাখব।
শেঠমোর্টন

ডেল রেকর্ড [-1] এর পার্শ্ব প্রতিক্রিয়া রয়েছে। এটি একটি খারাপ নকশা এবং সম্ভব হলে এড়ানো উচিত।
লংগরিমন্ট

149

আপনার এটি ব্যবহার করা উচিত

del record[-1]

সমস্যা

record = record[:-1]

আপনি যখনই কোনও আইটেম সরান তখন এটি তালিকার একটি অনুলিপি তৈরি করে, তাই খুব দক্ষ নয়


7
এটি গৃহীত উত্তরের চেয়ে ভাল সমাধান।
জেফ লেন্টস


9

তোমার দরকার:

record = record[:-1]

forলুপ আগে ।

এটি recordবর্তমান recordতালিকায় সেট করবে তবে শেষ আইটেমটি ছাড়াই । আপনি, আপনার প্রয়োজনের উপর নির্ভর করে এই কাজটি করার আগে তালিকাটি খালি নেই তা নিশ্চিত করতে চাইতে পারেন।


3
আপনি কি ব্যবহার করতে পারেন record.pop()? (এনবি: আমি অজগর থেকে খুব নতুন)
কোডবার্ড

2
হ্যাঁ, আপনি রেকর্ড.পপ () ব্যবহার করতে পারেন। দেখুন docs.python.org/3.3/tutorial/datastructures.html
সেবাস্টিয়ান

2
@ কোডবার্ড, আপনি ব্যবহার করতে পারেন popতবে আপনি যদি কেবল জিনিসটি ফেলে দিতে চান তবে এটি সত্যিই প্রয়োজনীয় নয়।
প্যাক্সিডিয়াবলো

2
আপনি রেকর্ড করতে পপ () দ্বারা ফেরত মান নির্ধারণ করছেন না তা নিশ্চিত করুন । অন্যথায় আপনি তালিকার শেষ মানটি রেকর্ডে সংরক্ষণ করছেন।
সেবাস্তিয়ান

1
@ প্যাক্সিডিয়ালো এবং বাস্তিয়ানো 9 - ধন্যবাদ - রিটার্নটি ব্যবহার না করে কোনও পারফরম্যান্স প্রভাব আছে কি?
কোডবার্ড

3

সময় নির্ধারণের সাথে যদি আপনি অনেক কিছু করেন তবে আমি এই ছোট (20 লাইন) প্রসঙ্গ পরিচালককে সুপারিশ করতে পারি:

আপনার কোডটি তখন এর মতো দেখতে পেত:

#!/usr/bin/env python
# coding: utf-8

from timer import Timer

if __name__ == '__main__':
    a, record = None, []
    while not a == '':
        with Timer() as t: # everything in the block will be timed
            a = input('Type: ')
        record.append(t.elapsed_s)
    # drop the last item (makes a copy of the list):
    record = record[:-1] 
    # or just delete it:
    # del record[-1]

কেবলমাত্র রেফারেন্সের জন্য, এখানে টাইমার প্রসঙ্গে ম্যানেজারের সামগ্রী সম্পূর্ণ:

from timeit import default_timer

class Timer(object):
    """ A timer as a context manager. """

    def __init__(self):
        self.timer = default_timer
        # measures wall clock time, not CPU time!
        # On Unix systems, it corresponds to time.time
        # On Windows systems, it corresponds to time.clock

    def __enter__(self):
        self.start = self.timer() # measure start time
        return self

    def __exit__(self, exc_type, exc_value, exc_traceback):
        self.end = self.timer() # measure end time
        self.elapsed_s = self.end - self.start # elapsed time, in seconds
        self.elapsed_ms = self.elapsed_s * 1000  # elapsed time, in milliseconds

আসলে আমি এই প্রথম 'টাইম' প্রোগ্রামটি লিখেছি, কিন্তু যখন আমি মডিউলটির সাথে আরও কিছুটা পরিচিত হই, আমি এটি একবার দেখে নেব, আপনাকে ধন্যবাদ!
সমীর

3

list.pop() আপনি যদি অন্যভাবে এটি ব্যবহার করতে চান তবে কেবল এখনই ব্যবহার করুন:list.popleft()


1

আপনার যদি তালিকার একটি তালিকা থাকে ( আমার ক্ষেত্রে ট্র্যাকড আউটপুট_শিট ), যেখানে আপনি প্রতিটি তালিকা থেকে শেষ উপাদানটি মুছতে চান, আপনি নীচের কোডটি ব্যবহার করতে পারেন:

interim = []
for x in tracked_output_sheet:interim.append(x[:-1])
tracked_output_sheet= interim
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.