Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में List.InsertRange() से एक साथ कई तत्व डालना


C# में List<T>.InsertRange() मेथड का उपयोग करके किसी सूची में निर्दिष्ट इंडेक्स पर एक साथ कई तत्व (किसी संग्रह से) डाले जा सकते हैं। यह Insert() को बार-बार कॉल करने से अधिक कुशल है।

उदाहरण

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        // मूल सूची
        List list = new List { 10, 20, 30, 40, 50 };
        
        Console.WriteLine($"मूल सूची: [{string.Join(", ", list)}]");
        
        // डालने के लिए तत्व (सरणी, सूची, या कोई IEnumerable)
        int[] newElements = { 60, 70, 80, 90 };
        
        // इंडेक्स 5 पर (अंत में) डालें
        list.InsertRange(5, newElements);
        
        Console.WriteLine($"InsertRange(5, newElements) के बाद:");
        Console.WriteLine($"  [{string.Join(", ", list)}]");
        
        // मध्य में डालना
        int[] moreElements = { 25, 35 };
        list.InsertRange(2, moreElements); // इंडेक्स 2 पर (30 से पहले)
        
        Console.WriteLine($"\nInsertRange(2, {{25, 35}}) के बाद:");
        Console.WriteLine($"  [{string.Join(", ", list)}]");
    }
}

आउटपुट

मूल सूची: [10, 20, 30, 40, 50]
InsertRange(5, newElements) के बाद:
  [10, 20, 30, 40, 50, 60, 70, 80, 90]

InsertRange(2, {25, 35}) के बाद:
  [10, 20, 25, 35, 30, 40, 50, 60, 70, 80, 90]

InsertRange() सिंटैक्स

public void InsertRange(int index, IEnumerable collection);
पैरामीटरविवरण
indexडालने की शुरुआती स्थिति (0-आधारित)। 0 = शुरुआत, Count = अंत
collectionडालने वाले तत्वों का संग्रह (कोई भी IEnumerable<T>)

विभिन्न संग्रह प्रकारों के साथ InsertRange

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        List list = new List { "A", "B", "C" };
        
        // 1. सरणी से
        list.InsertRange(1, new[] { "X", "Y" });
        Console.WriteLine($"सरणी से: [{string.Join(", ", list)}]");
        
        // 2. दूसरी सूची से
        list.InsertRange(3, new List { "P", "Q" });
        Console.WriteLine($"सूची से: [{string.Join(", ", list)}]");
        
        // 3. LINQ क्वेरी से
        list.InsertRange(0, new[] { "M", "N" }.Where(s => s != "M"));
        Console.WriteLine($"LINQ से: [{string.Join(", ", list)}]");
        
        // 4. खाली संग्रह (कोई प्रभाव नहीं)
        list.InsertRange(0, Array.Empty());
        Console.WriteLine($"खाली संग्रह: [{string.Join(", ", list)}]");
    }
}

आउटपुट

सरणी से: [A, X, Y, B, C]
सूची से: [A, X, Y, P, Q, B, C]
LINQ से: [N, A, X, Y, P, Q, B, C]
खाली संग्रह: [N, A, X, Y, P, Q, B, C]

InsertRange() बनाम अन्य दृष्टिकोण

मेथडउपयोग केसप्रदर्शन
Insert(index, item)एकल तत्व डालनाO(n) प्रति कॉल
InsertRange(index, collection)एकाधिक तत्व एक साथ डालनाO(n + m) कुल, बेहतर
AddRange(collection)अंत में जोड़नाO(m) - सबसे तेज
list = list.Concat(...).ToList()LINQ दृष्टिकोण (नई सूची बनाता है)O(n + m) - अधिक मेमोरी

प्रदर्शन तुलना

using System;
using System.Collections.Generic;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        int count = 10000;
        int insertCount = 1000;
        int[] toInsert = new int[insertCount];
        
        // Insert() लूप
        var list1 = new List(count);
        for (int i = 0; i < count; i++) list1.Add(i);
        
        var sw = Stopwatch.StartNew();
        for (int i = 0; i < insertCount; i++)
            list1.Insert(count / 2, toInsert[i]);
        Console.WriteLine($"Insert() लूप: {sw.ElapsedMilliseconds} ms");
        
        // InsertRange()
        var list2 = new List(count);
        for (int i = 0; i < count; i++) list2.Add(i);
        
        sw.Restart();
        list2.InsertRange(count / 2, toInsert);
        Console.WriteLine($"InsertRange(): {sw.ElapsedMilliseconds} ms");
    }
}

महत्वपूर्ण बिंदु

  • InsertRange() मौजूदा तत्वों को दाईं ओर शिफ्ट करता है
  • इंडेक्स Count के बराबर होने पर अंत में जोड़ता है (AddRange के समान)
  • इंडेक्स 0 होने पर शुरुआत में जोड़ता है
  • संग्रह null नहीं होना चाहिए (पर खाली हो सकता है)
  • क्षमता (Capacity) स्वचालित रूप से बढ़ जाती है यदि आवश्यक हो
  • बड़े सम्मिलन के लिए InsertRange लूप से काफी तेज है
  1. - C# में इंडेक्स का उपयोग करके लिस्ट में आइटम इंसर्ट करना

    Insert() मेथड से इंडेक्स पर आइटम जोड़ना लिस्ट सेट करें: List<int> list = new List<int>(); list.Add(456); list.Add(321); list.Add(123); list.Add(877); list.Add(588); list.Add(459); इंडेक्स 5 पर आइटम जोड़ें: list.Insert(5, 999); पूर्ण कोड उदाहरण using System; using System.Collections.

  1. - Python में एक साथ कई मैट्रिक्स का इनवर्स निकालें

    NumPy का numpy.linalg.inv() फंक्शन मैट्रिक्स के स्टैक (बैच) का इनवर्स एक साथ निकाल सकता है। यह 3D ऐरे (..., M, M) को इनपुट के रूप में लेता है और प्रत्येक मैट्रिक्स का इनवर्स निकालता है। सिंटैक्स numpy.linalg.inv(a) a: वर्ग मैट्रिक्स का स्टैक, आकार (..., M, M)। वापसी: इनवर्स मैट्रिक्स का स्टैक

  1. - पायथन में K से बड़ा सबसे छोटा तत्व खोजें

    पायथन का उपयोग करके डेटा विश्लेषण के दौरान हम कई ऐसे परिदृश्यों का सामना करते हैं जहां हमें एक सूची से कुछ मानदंडों को पूरा करने वाले तत्वों को फ़िल्टर करना होता है। इस लेख में हम देखेंगे कि किसी सूची से एक तत्व कैसे प्राप्त करें जो दिए गए तत्व से बड़ा हो लेकिन ऐसे सभी तत्वों में से सबसे छोटा हो जो