بکندباز

متد ‎index()‎‎ در پایتون

مثال

پیدا کردن ایندکس آیتم “cherry” در لیست:

fruits = ['apple', 'banana', 'cherry']

x = fruits.index("cherry")
print(x)

توضیحات

متد ‎index()‎ ایندکس اولین جایی که کلمه مشخص شده در لیست پیدا می شود را در خروجی برمیگرداند.

سینتکس

list.index(elmnt)

مقادیر پارامتر ها

پارامتر توضیح
elmnt اجباری. آیتمی که می خواهیم موقعیت آن را پیدا کنیم

مثال

ایندکس اولین عدد 32 در لیست:

fruits = [4,  55, 64, 32, 16, 32]

x = fruits.index(32)
print(x)

 

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*

    nima پاسخ

    سلام وقت بخیر
    اگر بخوایم عددی رو عنوان index از کاربر بگیریم و مقدار اون رو برگردونیم به کاربر دسنور به چه صورت میشه؟
    سپاس

      ‏زهره احمدی پاسخ

      سلام. وقت شما بخیر
      باید به این شکل عمل کنید:

      
      i = input('Enter Index:')
      
      fruits = ['apple', 'banana', 'cherry']
      
      x = fruits[int(i)]
      print(x)
      
      
    ely پاسخ

    اگر یه متغیر دارم بخوام بدونم چند ایندکس داره چیکار کنم

    مهدی پاسخ

    با سلام.
    اگه چند تا کلمه ی مشابه در لیست داشته باشیم و به خواهیم ، مکان آن ها را در لیست پیدا و به ترتیب در خروجی بازگرداند از چه متدی استفاده می شود؟

      ‏زهره احمدی پاسخ

      سلام. برای اینکار می تونید از تابع enumerate استفاده کنید. این تابع به همه ی اعضای مجموعه یک ایندکس اضافه می کنه که با استفاده از حلقه ی for می تونید ایندکس همه ی اعضای مشابه رو پیدا کنید. مثلاً‌ توی این مثال ایندکس همه ی کلمات banana پیدا و چاپ میشه:

      
      my_list = ['apple', 'banana', 'cherry','banana','blueberry']
      indices = [i for i, x in enumerate(my_list) if x == "banana"]
      print(indices)
      
      
    moein پاسخ

    سلام اگه بخوایم از ایندکس یک رشته ایی را پیدا کنیم بعد هفتا بعدشو پرینت کنیم به همین ترتیب چهل تا چهل تا بره جلو باید چه کنیم

      ‏زهره احمدی پاسخ

      اگر درست سوال رو متوجه شده باشم از همچین کدی می تونید استفاده کنید:

      
      text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
      
      #ایندکس حرف c
      first_index = text.index('c')
      print(first_index)
      
      #هفت حرف بعد از آن
      seven_after = first_index + 7
      print(text[seven_after])
      
      #چاپ 40 تا 40 تا بعد از آن
      for i in range(seven_after+40, len(text), 40):
          print(text[i])
      
      
    Moein پاسخ
    
    smartphoneList = "model:A13,price:3500000,number:3,sold:3,model:A03,price:2000000,number:5,sold:5,model:A70,price:8000000,number:10,sold:8,model:F42,price:4000000,number:20,sold:8,model:M52,price:5000000,number:10,sold:5,model:M22,price:3500000,number:11,sold:5,model:M32,price:4000000,number:31,sold:5,model:A20,price:3000000,number:12,sold:5,model:A52,price:7000000,number:5,sold:5,model:s21,price:15000000,number:2,sold:8,"
    
    

    فکر کنم درست سوالم و نپرسیدم من میخوام در این رشته اعدادی که مساوی با نابرن رو دربیارم که از راه ایندکس رفتم ولی به دو رقمی ها میرسم نمی تونم و لی در کل میخوام اعدادی که مساوی با نامبرو به صورت اینت در بیارم ممنون میشم کمک کنید.

      ‏زهره احمدی پاسخ

      من متوجه سوالتون نمیشم. اعدادی که مساوی با نامبرن یعنی چی؟

      نمونه ی خروجی مد نظرتون رو بفرستید

    n.s پاسخ

    سلام وقت بخیر اگر بخواهیم مکان اخرین جایی که مشاهده کرده رو برگردونه باید چجوری استفاده ش کنیم ؟

      ‏زهره احمدی پاسخ

      سلام. وقت بخیر
      می تونید از کد زیر استفاده کنید. اول لیست رو برعکس می کنیم. ایندکس آیتم رو به دست میاریم و از طول لیست منهای یک کم می کنیم تا ایندکسش توی لیست اصلی به دست بیاد. اگر در ادامه ی برنامه هم نیاز دارید که از لیست استفاده کنید دوباره برعکسش کنید.

      fruits = [4,  55, 64, 32, 16, 32,65]
      fruits.reverse()
      x = len(fruits) -1 - fruits.index(32)
      fruits.reverse()
      print(x)
        مریم پاسخ

        سلام وقتتون بخیر
        ببخشید ی رشته ای داریم ب این شکل مثلا s=aliahmadi
        Print(0:_2:_4)میگه مثلا دوتا دوتاجلو بریم مشخص کنیم چطوری میشه تو ضیح بدین من کلا گیجم نمونه هاش اینا بگین

          zohreh پاسخ

          Print(0:_2:_4) این کدی که نوشتید صحیح نیست. اصلاً متغیر s در کد استفاده نشده.

           

    امیر سجاد صادقی پاسخ

    من میخوام 5 تا ایدی اسم و فامیلی بگیرم بریزم تو مای لیست بعد شو ال با ایندکس یکی رو پیدا کنم
     

      ‏زهره احمدی پاسخ

      اگر بخواهید با ایندکس از توی لیست مقداری رو استخراج کنید باید عدد ایندکس رو جلوی نام متغیر لیستتون قرار بدید. به این شکل:

      myList = ['ali ahmadi', 'maryam bagheri', 'zahra yazdani'];
      
      print(myList[2])
    ایدا جلالی پاسخ

    چجوری با ایندکس و فور لیست رو برعکس کنیم فقط ایندکس و فور  یعنی از ریورس و بقیه استفاده نشه؟

      ‏زهره احمدی پاسخ

      سلام. می تونین از کد زیر استفاده کنین:

      fruits = [4,  55, 64, 32, 16, 32]
      revFruits = []
      
      for i in range(len(fruits)-1, -1, -1):
          revFruits.append(fruits[i])
      
      print(revFruits)

      یک حلقه می سازیم که شروعش طول لیست منهای یک هست و پایانش هم صفر. با گام های منفی 1 هم حرکت می کنه. به این صورت یکی یکی از ایندکس آخر، مقدار مربوطه رو توی لیست جدید اضافه می کنیم.

    Moslem پاسخ

    سلام کدی نوشتم که میاد یه عددی از کاربر میگیره همراه اپشن و روی اون دو تا عدد عملیات ریاضی انجام میده و برای بار بعدی تکرار میشه حالا مشکلم اینجاست که وقتی کاراکتر + رو میزنم اسکیریپت درست اجرا میشه ولی وقتی مثلا عدد ۱ رو میزنم خطا نمیده ولی جلوی مساوی none رو برمیگردونه :

    Print("2.sum(-)"),,,Print("1.sum(+)")
    اینجا کاربر میتونه عدد ۱ یا + رو انتخاب کنه

    حالا وقتی کاربر + رو میزنه درسته ولی وقتی مثلا میزنه ۱ و مثلا اعداد ۵،۶ که با هم جمع شون کنه اینجوری میشه 6 1 5 = none (البته بر عکس این عبارت) به جای اینکه بگه ۱۱=۵ + ۶ به جای کاراکتر + عدد ۱ رو گذاشته و به جای حاصل جواب none ،،،حالا باید اینجا باید چیکار کنم که این مشکل بر طرف بشه؟

      ‏زهره احمدی پاسخ

      سلام. لطفاً کدتون رو به صورت کامل ارسال کنید تا بررسی کنم.

      آیکون <> روی ادیتور رو بزنید و کدتون رو از این طریق ارسال کنید.

    Zahraaht پاسخ

    سلام، اگه بگن برنامه بنویسید که یک رشته از ورودی input بخواند و مقدار ایندکس اخر را چاپ کند چجوری میشه، ممنون

      ‏زهره احمدی پاسخ

      سلام. ایندکس آخر میشه ایندکس (1-) که به این شکل می تونید مقدارش رو به دست بیارید:

      text = input("Enter your text: ")
      
      print(text[-1])
        ‏زهره احمدی پاسخ

        خود ایندکس آخر هم اگر بخواید برابر هست با طول رشته ورودی منهای 1.

    مصطفی شبانی پاسخ

    سلام 
    آیا امکان تغییر ایندکس وجود داره، به طوریکه ایندکس بجای اینکه از صفر شروع بشه از یک شروع بشه؟
    امکانش هست کد مربوطه رو بفرمایید ..
     

      zohreh پاسخ

      خیر. ایندکس در لیست ها همیشه از صفر شروع میشه. اگر بخواهید ایندکس اختصاصی داشته باشید باید از دیکشنری ها به جای لیست استفاده کنید.

    pmcir پاسخ

    سلام و خستنه باشید من تازه تو سایت شما ثبت نام کردم  سایتتون فوق العاده است

      zohreh پاسخ

      سلام سلامت باشید.

      خوشحالم که مطالب مورد استفاده واقع شده 🙏

    mb13812016 پاسخ

    سلام خسته نباشید 
    من یک خط کد دارم که داخلش میخوام به ایندکس 9  برسم و اونجور که من فکر میکنم ایندکس 9 باید اسپیس باشه اما وقتی از داخل پایتون ایندکس 9 رو ازش میخوام یک چیز دیگه برمیگردونه (اگه اسپیس ها رو نشمرم درست میشه ها ولی مگه ایا اسپیس ها جزو ایندکس ها حساب نمیشه ؟؟)
    اینم کد

     print(string_3[10])#Python 4 Data Science is string_3  ---- 9 index
    ایندکس ۹ رو میخوام توی خروجی برام پرینت کنه 

      zohreh پاسخ

      سلام. اگر می خواید نهمین حرف رو چاپ کنید باید ایندکس شماره 8 رو چاپ کنید. الان اگر متن شما Python 4 Data Science باشه، ایندکس شماره 9 میشه حرف D، ایندکس شماره 10 هم میشه حرف a.

      ولی نهمین حرف که ایندکس شماره 8 هست، اسپیسه.

        mb13812016 پاسخ

        پس یعنی اسپیس هم جزو ایندکس ها حساب میشه دیگه 
        بعد برای شمارش از صفر شروع میکنه دیگه درسته 

          zohreh پاسخ

          بله درسته

    ali پاسخ

    سلام 
    سوال: اگر از کاربر4عدد و 4 اسم بگیریم و بخواهیم عدد زوج با اسم متناظرش چاپ شود چگونه کد بزنیم 

    Khashy پاسخ

    سلام 
    اگر بخوایم حرف اول یک کلمرو جدا کنیم چی؟
    مثلا هر کلمه ای که h شروع میشه 
    hello how are you

      zohreh پاسخ

      سلام

      اول با متد split می تونید جمله تون رو به کلماتش تقسیم کنید. بعد توی یک حلقه for تک تک کلمات رو بررسی کنید. اگر می خواید کلماتی که h شروع میشن رو پیدا کنید باید ایندکس 0 هر کلمه رو چک کنید اگر h بود پرینت بگیرید یا توی یک حلقه دیگه قرار بدید. البته به این متد index نیازی پیدا نمی کنید.

      txt = "hello how are you"
      
      words = txt.split()
      
      for word in words:
          if word[0] == 'h':
              print(word)

       

       

    دلارام پاسخ

    چجوری میشه یه لیست از اسم هارو بنویسیم و ایندکس اول و دومش رو پرینت کنیم؟؟

      zohreh پاسخ

      سلام. ایندکس اول و دوم یعنی ایندکس 0 و 1. پس به این شکل می تونید پرینت بگیرید:

      myList = ['zohreh', 'delaram', 'ali', 'mohammad']
      
      print(myList[0])
      print(myList[1])
    ترنم پاسخ

    درود روز بخیر
    تمرین: مرحله اول: برنامه ای بنویسید که اسامی پنج نفر را از کاربر گرفته و آن را به یک لیست اضافه کندو در ادامه اسامی که با حروف ای شروع می‌شود را چاپ کند
    برای این چه کدی باید بنویسیم؟

      zohreh پاسخ

      سلام. از این کد می تونید استفاده کنید:

      name1 = input("Enter name 1: ")
      name2 = input("Enter name 2: ")
      name3 = input("Enter name 3: ")
      name4 = input("Enter name 4: ")
      name5 = input("Enter name 5: ")
      nameList = [name1, name2, name3, name4, name5]
      for name in nameList:
          if name[0] == 'a' or name[0] == 'A':
              print(name)
      
    مهسا پاسخ

    کدی بنویسید که اولین ایندکسی که حرف S دارد را نمایش دهد
    s = 'hello how are you Sina, are you feeling okay?'
    سلام شما چگونه به این سوال جواب میدید

      zohreh پاسخ

      سلام. از این کد استفاده کنید:

      s = 'hello how are you Sina, are you feeling okay?'
      
      try:
          index = s.index('S')
          print("Index of the first occurrence of 'S':", index)
      except ValueError:
          print("No occurrence of 'S' found in the string.")
    .. پاسخ

    درود 
    برنامه ای، بنویسید که دوتا عدد از کاربر گرفته و عدد اولی را به توان دومی برساند
    اینو با حلقه For میتونین بنویسین؟
    یعنی از علامت**این برای توان استفاده نکنین
    و بصورت یک تابع به اسم power بنویسینش
    ممنون

      zohreh پاسخ

      سلام. این تمرین قبلاً در سایت ثبت شده. می تونید از پاسخ هایی که کاربران به این تمرین دادن استفاده کنید:
      https://backendbaz.ir/practice/pr-23298/

        .. پاسخ

        سلام
        ببخشید این لینکی که دادین باز نمیشه و خطای ۴۰۴میزنه

          zohreh پاسخ

          الان تست کنید باز میشه

    Taranom پاسخ

    درود 
    میشه یه کد بدین که یه اسم از کاربر بگیره و اونو تو کادر ستاره ای  با یه فاصله در هر حرف اسم و در بین ستاره ها چاپ کنه

      zohreh پاسخ

      سلام.

      از این کد می تونید استفاده کنید:

      name = input("Enter name: ")
      
      size = len(name)
      result = ''
      #چاپ ستاره های اولیه
      for i in range(size * 2 + 3):
          result += "*"
          
      #گذاشتن فاصله بین حروف اسم
      name = ''.join([n + " " for n in name])
      result += f"\n* {name}*\n"
      
      #چاپ ستاره های انتهایی
      for i in range(size * 2 + 3):
          result += "*"
          
      print(result)

      نمونه ورودی خروجی:

      Enter name: Backendbaz
      ***********************
      * B a c k e n d b a z *
      ***********************
      
      
        Taranom پاسخ

        ممنون ولی بدونjoinنمیشه؟
        چون یادش نگرفتیم

          zohreh پاسخ

          چرا میشه. همون قسمت رو می تونید با حلقه for بنویسید:

          name = input("Enter name: ")
          
          size = len(name)
          result = ''
          #چاپ ستاره های اولیه
          for i in range(size * 2 + 3):
              result += "*"
              
          result += "\n* " #ستاره قبل از اسم
          #گذاشتن فاصله بین حروف اسم
          for n in name:
              result += n + " "
          
          result += "*\n" #ستاره بعد از اسم
          
          #چاپ ستاره های انتهایی
          for i in range(size * 2 + 3):
              result += "*"
              
          print(result)
    Taranom پاسخ

    سلام کد اینو میگین؟لطفا
    برنامه ای بنویسید که چهار نمره ی پنج دانش آموز را گرفته و به تابعی ارسال کند که معدل هرکدام را محاسبه کند
    ممنون

      zohreh پاسخ

      سلام. بفرمایید:

      def calculate_average(grades):
          total = sum(grades)
          average = total / len(grades)
          return average
      
      def main():
          student_names = ["student 1", "student 2", "student 3", "student 4", "student 5"]
          all_student_grades = []
      
          for name in student_names:
              print(f"student {name}:")
              grades = []
              for i in range(4):
                  grade = int(input(f"grade {i + 1}: "))
                  grades.append(grade)
              all_student_grades.append(grades)
          
          print("\naverage grade for each student:")
          for i in range(len(student_names)):
              average_grade = calculate_average(all_student_grades[i])
              print(f"{student_names[i]}: average {average_grade:.2f}")
    .. پاسخ

    درود خسته نباشید کد اینو میگید لطفا
    برنامه ای بنویسید که محتویات یک فایل را توسط Read lines بخواند و در یک فایل متنی دیگر توسط write linesبنویسید
    سپاس فراوان

      zohreh پاسخ

      سلام. سلامت باشید

      خواندن محتویات یک فایل و نوشتن آن در یک فایل دیگر با استفاده از توابع `readlines` و `writelines`:

      # نام فایلی که می‌خواهید اطلاعات از آن را بخوانید
      input_file_name = "input.txt"
      
      # نام فایلی که می‌خواهید اطلاعات را در آن بنویسید
      output_file_name = "output.txt"
      
      try:
          # باز کردن فایل ورودی برای خواندن
          with open(input_file_name, 'r') as input_file:
              # خواندن محتویات فایل ورودی خط به خط
              lines = input_file.readlines()
      
          # باز کردن فایل خروجی برای نوشتن
          with open(output_file_name, 'w') as output_file:
              # نوشتن محتویات خوانده شده به فایل خروجی
              output_file.writelines(lines)
      
          print(f"محتوای فایل {input_file_name} با موفقیت به فایل {output_file_name} منتقل شد.")
      
      except FileNotFoundError:
          print("یکی از فایل‌ها یافت نشد.")
      except Exception as e:
          print(f"خطایی رخ داد: {e}")
      

      در این کد، ما ابتدا نام فایل ورودی و فایل خروجی را مشخص می‌کنیم. سپس با استفاده از `open` فایل ورودی را برای خواندن باز می‌کنیم و محتویات آن را با `readlines` به صورت لیستی از خطوط می‌خوانیم. سپس فایل خروجی را با `open` برای نوشتن باز می‌کنیم و محتویات خوانده شده را با `writelines` به فایل خروجی می‌نویسیم.

      نیاز است که فایل‌های مورد نیاز را در همان دایرکتوری که اجرای برنامه انجام می‌دهید قرار دهید و نام آنها را در متغیرهای `input_file_name` و `output_file_name` قرار دهید. برنامه خواهد خواند و نوشته شده در فایل‌ها را چاپ می‌کند و از وقوع خطاها نیز اطلاع می‌دهد.

    مریم پاسخ

    سلام من هرچی میزنم کد، درست میزنم ولی همش عرور میده نمیدون چکار‌کنم بعضیاشون درست میشه ولی بقیه ن‌مطعنم درستن نیدونم مشکل از‌من یا جایی ک‌کد میزنم

      zohreh پاسخ

      سلام. چه کدی ارور میده؟

    ناشناس پاسخ

    سلام ببخشید اگه 3 حروف مشترک بودند باید چطور پیدا کنیم
     

      zohreh پاسخ

      توی کلمه زیر 3 حرف r وجود داره. برای پیدا کردن ایندکس تمام حروف r می تونیم از کد زیر استفاده کنیم:

      word = "rearrange"
      indices = [i for i, letter in enumerate(word) if letter == 'r']
      
      print(indices)
      
    سارا پاسخ

    برنامه ای بنویسید که در یک لیست شماره بزرگترین عنصر را چاپ کند
     

      zohreh پاسخ

      می تونید ابتدا با متد max بزرگترین عنصر رو پیدا کنید و سپس با متد index، ایندکس اون عنصر رو چاپ کنید.

    zeynab پاسخ

    سلام وقتتون بخیر چطوری میتونم همه موقعیت های یک کاراکتر رو پیدا کنم با index و حلقه while

      backendbaz پاسخ

      برای پیدا کردن همه موقعیت‌های یک کاراکتر در یک رشته با استفاده از حلقه while، باید از متد find استفاده کنید. چون متد find سه ورودی می گیرد و با ورودی دوم آن می توانیم نقطه شروع جستجو را نیز انتخاب کنیم. در این مثال، ما موقعیت‌های کاراکتر 'a' را در رشته fruits پیدا می‌کنیم.

      fruits = 'apple and banana'
      char_to_find = 'a'
      index = 0
      positions = []
      
      while index < len(fruits):
          index = fruits.find(char_to_find, index)  # پیدا کردن موقعیت کاراکتر
          if index == -1:  # اگر کاراکتر پیدا نشد
              break
          positions.append(index)  # اضافه کردن موقعیت به لیست
          index += 1  # افزایش ایندکس برای ادامه جستجو
      
      print(positions)
       

      توضیحات کد:

      • از تابع find برای پیدا کردن موقعیت کاراکتر 'a' استفاده می‌شود. این تابع ایندکس اولین وقوع کاراکتر را برمی‌گرداند.
      • اگر کاراکتر پیدا نشود، find مقدار -1 را برمی‌گرداند و حلقه متوقف می‌شود.
      • هر بار که کاراکتر پیدا می‌شود، ایندکس آن به لیست positions اضافه می‌شود و ایندکس برای جستجوی بعدی افزایش می‌یابد.