Ban a variable from a list with a “ban” list











up vote
0
down vote

favorite












How can I ban a variable from a list without removing it from that list by adding the variable to a list of "banned" variable?



I wish to be able to type in a string. That string is compared to the file names in a folder. If there is a match, the file is read. If I type this same string again, the file should not be read again. There for I want to have a list of "banned" string that is checked whilst typing to avoid the file to be read again.



I have tried a few ways but not getting there. Below is an example of my last attempt.



What would be the best way?



public class test 
{

string scl= "test3";

List <string> lsf,lso;

void Start ()
{
lsf=//file names
new List<string>();

lso=//files open
new List<string>();

lsf.Add("test0");
lsf.Add("test1");
lsf.Add("test2");
lsf.Add("test3");
lsf.Add("test4");

lso.Add("idhtk49fngo");//random string
}

void Update ()
{
if
(
Input.GetKeyDown("a")
)
{
for
(
int i=0;
i<lsf.Count;
i++
)
{
if(lsf[i]==scl)
{
Debug.Log
(i+" is read");

for
(
int j=0;
j<lso.Count;
j++
)
{

//how can i avoid reading
//lsf[3] here the second time
//"a" is pressed (by having "test3"
//added to a "ban" list (lso) )

if(scl!=lso[j])
{

lso.Add(lsf[i]);

}
}
}
}
}
}









share|improve this question
























  • "Ban" is the wrong term. "AlreadyChecked" is the right one. At it's score, you need a list (AlreadyChecked) and contains check on any input before you run it through the folder itterator. Note that you might run into issue with excact spelling and normalisation, but with Windows Filename Search that is part of the mechanic anyway.
    – Christopher
    Nov 10 at 14:08








  • 1




    Your question is a borderline case example for a "XY" problem. The X you want to solve is "do not touch the same file/folder twice". The Y you came up with was a "ban list" on the inputs. There might actually be a better solution if you ask for teh X, rather then for help with your choosen Y.
    – Christopher
    Nov 10 at 14:12

















up vote
0
down vote

favorite












How can I ban a variable from a list without removing it from that list by adding the variable to a list of "banned" variable?



I wish to be able to type in a string. That string is compared to the file names in a folder. If there is a match, the file is read. If I type this same string again, the file should not be read again. There for I want to have a list of "banned" string that is checked whilst typing to avoid the file to be read again.



I have tried a few ways but not getting there. Below is an example of my last attempt.



What would be the best way?



public class test 
{

string scl= "test3";

List <string> lsf,lso;

void Start ()
{
lsf=//file names
new List<string>();

lso=//files open
new List<string>();

lsf.Add("test0");
lsf.Add("test1");
lsf.Add("test2");
lsf.Add("test3");
lsf.Add("test4");

lso.Add("idhtk49fngo");//random string
}

void Update ()
{
if
(
Input.GetKeyDown("a")
)
{
for
(
int i=0;
i<lsf.Count;
i++
)
{
if(lsf[i]==scl)
{
Debug.Log
(i+" is read");

for
(
int j=0;
j<lso.Count;
j++
)
{

//how can i avoid reading
//lsf[3] here the second time
//"a" is pressed (by having "test3"
//added to a "ban" list (lso) )

if(scl!=lso[j])
{

lso.Add(lsf[i]);

}
}
}
}
}
}









share|improve this question
























  • "Ban" is the wrong term. "AlreadyChecked" is the right one. At it's score, you need a list (AlreadyChecked) and contains check on any input before you run it through the folder itterator. Note that you might run into issue with excact spelling and normalisation, but with Windows Filename Search that is part of the mechanic anyway.
    – Christopher
    Nov 10 at 14:08








  • 1




    Your question is a borderline case example for a "XY" problem. The X you want to solve is "do not touch the same file/folder twice". The Y you came up with was a "ban list" on the inputs. There might actually be a better solution if you ask for teh X, rather then for help with your choosen Y.
    – Christopher
    Nov 10 at 14:12















up vote
0
down vote

favorite









up vote
0
down vote

favorite











How can I ban a variable from a list without removing it from that list by adding the variable to a list of "banned" variable?



I wish to be able to type in a string. That string is compared to the file names in a folder. If there is a match, the file is read. If I type this same string again, the file should not be read again. There for I want to have a list of "banned" string that is checked whilst typing to avoid the file to be read again.



I have tried a few ways but not getting there. Below is an example of my last attempt.



What would be the best way?



public class test 
{

string scl= "test3";

List <string> lsf,lso;

void Start ()
{
lsf=//file names
new List<string>();

lso=//files open
new List<string>();

lsf.Add("test0");
lsf.Add("test1");
lsf.Add("test2");
lsf.Add("test3");
lsf.Add("test4");

lso.Add("idhtk49fngo");//random string
}

void Update ()
{
if
(
Input.GetKeyDown("a")
)
{
for
(
int i=0;
i<lsf.Count;
i++
)
{
if(lsf[i]==scl)
{
Debug.Log
(i+" is read");

for
(
int j=0;
j<lso.Count;
j++
)
{

//how can i avoid reading
//lsf[3] here the second time
//"a" is pressed (by having "test3"
//added to a "ban" list (lso) )

if(scl!=lso[j])
{

lso.Add(lsf[i]);

}
}
}
}
}
}









share|improve this question















How can I ban a variable from a list without removing it from that list by adding the variable to a list of "banned" variable?



I wish to be able to type in a string. That string is compared to the file names in a folder. If there is a match, the file is read. If I type this same string again, the file should not be read again. There for I want to have a list of "banned" string that is checked whilst typing to avoid the file to be read again.



I have tried a few ways but not getting there. Below is an example of my last attempt.



What would be the best way?



public class test 
{

string scl= "test3";

List <string> lsf,lso;

void Start ()
{
lsf=//file names
new List<string>();

lso=//files open
new List<string>();

lsf.Add("test0");
lsf.Add("test1");
lsf.Add("test2");
lsf.Add("test3");
lsf.Add("test4");

lso.Add("idhtk49fngo");//random string
}

void Update ()
{
if
(
Input.GetKeyDown("a")
)
{
for
(
int i=0;
i<lsf.Count;
i++
)
{
if(lsf[i]==scl)
{
Debug.Log
(i+" is read");

for
(
int j=0;
j<lso.Count;
j++
)
{

//how can i avoid reading
//lsf[3] here the second time
//"a" is pressed (by having "test3"
//added to a "ban" list (lso) )

if(scl!=lso[j])
{

lso.Add(lsf[i]);

}
}
}
}
}
}






c# unity3d






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 10 at 14:21









Michał Turczyn

13.5k132039




13.5k132039










asked Nov 10 at 14:06









cubecube

11




11












  • "Ban" is the wrong term. "AlreadyChecked" is the right one. At it's score, you need a list (AlreadyChecked) and contains check on any input before you run it through the folder itterator. Note that you might run into issue with excact spelling and normalisation, but with Windows Filename Search that is part of the mechanic anyway.
    – Christopher
    Nov 10 at 14:08








  • 1




    Your question is a borderline case example for a "XY" problem. The X you want to solve is "do not touch the same file/folder twice". The Y you came up with was a "ban list" on the inputs. There might actually be a better solution if you ask for teh X, rather then for help with your choosen Y.
    – Christopher
    Nov 10 at 14:12




















  • "Ban" is the wrong term. "AlreadyChecked" is the right one. At it's score, you need a list (AlreadyChecked) and contains check on any input before you run it through the folder itterator. Note that you might run into issue with excact spelling and normalisation, but with Windows Filename Search that is part of the mechanic anyway.
    – Christopher
    Nov 10 at 14:08








  • 1




    Your question is a borderline case example for a "XY" problem. The X you want to solve is "do not touch the same file/folder twice". The Y you came up with was a "ban list" on the inputs. There might actually be a better solution if you ask for teh X, rather then for help with your choosen Y.
    – Christopher
    Nov 10 at 14:12


















"Ban" is the wrong term. "AlreadyChecked" is the right one. At it's score, you need a list (AlreadyChecked) and contains check on any input before you run it through the folder itterator. Note that you might run into issue with excact spelling and normalisation, but with Windows Filename Search that is part of the mechanic anyway.
– Christopher
Nov 10 at 14:08






"Ban" is the wrong term. "AlreadyChecked" is the right one. At it's score, you need a list (AlreadyChecked) and contains check on any input before you run it through the folder itterator. Note that you might run into issue with excact spelling and normalisation, but with Windows Filename Search that is part of the mechanic anyway.
– Christopher
Nov 10 at 14:08






1




1




Your question is a borderline case example for a "XY" problem. The X you want to solve is "do not touch the same file/folder twice". The Y you came up with was a "ban list" on the inputs. There might actually be a better solution if you ask for teh X, rather then for help with your choosen Y.
– Christopher
Nov 10 at 14:12






Your question is a borderline case example for a "XY" problem. The X you want to solve is "do not touch the same file/folder twice". The Y you came up with was a "ban list" on the inputs. There might actually be a better solution if you ask for teh X, rather then for help with your choosen Y.
– Christopher
Nov 10 at 14:12














4 Answers
4






active

oldest

votes

















up vote
0
down vote













Michael’s answer is the way to go here but it can be improved using the more appropriate collection available to keep track of opened files; if you want uniqueness use a set, not a list:



 HashSet<string> openedFiles = new HashSet<string>();

public static bool TryFirstRead(
string path,
out string result)
{
if (openedFiles.Add(path))
{
result = File.ReadAllText(path);
return true;
}

result = null;
return false;
}


Also, I’d avoid throwing vexing exceptions. Give the consumer a friendly way to know if the file was read or not, don’t make them end up having to use exceptions as a flow control mechanism.






share|improve this answer






























    up vote
    0
    down vote













    I didn't understand although if you want to replace a value from another list.
    You can use the list index to create a new list with the values which you removed.
    String list1 = {"hi", "hello", "World"};
    String list2 = {"bye", "goodbye", "World"};
    List1[1] = list2[1];






    share|improve this answer




























      up vote
      0
      down vote













      I would suggest such way:



      public static List<string> openedFiles = new List<string>();
      public static string ReadFileAndAddToOpenedList(string path)
      {
      if (openedFiles.Contains(path))
      throw new Exception("File already opened");
      // Instead of throwing exception you could for example just log this or do something else, like:
      // Consolle.WriteLine("File already opened");
      else
      {
      openedFiles.Add(path);
      return File.ReadAllText(path);
      }
      }


      The idea is - on every file read, add file to list, so you can check every time you try read file, if it was already read (or opened). If it is, throw exception (or do something else). Else read a file.






      share|improve this answer






























        up vote
        0
        down vote













        You could instead of making it a string list use your own class





        public class MyFile
        {
        public string Name;
        public bool isOpen;

        public MyFile(string name)
        {
        Name = name;
        isOpen = false;
        }
        }

        List<MyFile> lsf = new List<MyFile>()
        {
        new MyFile("test0"),
        new MyFile("test1"),
        new MyFile("test2"),
        new MyFile("test3"),
        new MyFile("test4")
        };


        Than when you read the file set isOpen to true



        MyFile[someIndex].isOpen = true;


        and later you can check this



        // E.g. skip in a loop
        if(MyFile[someIndex]) continue;


        You could than also use Linq in order to get a list of only unread files:



        var unreadFiles = lsf.Select(f => f.Name).Where(file => !file.isOpen);





        share|improve this answer























          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239755%2fban-a-variable-from-a-list-with-a-ban-list%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          4 Answers
          4






          active

          oldest

          votes








          4 Answers
          4






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          0
          down vote













          Michael’s answer is the way to go here but it can be improved using the more appropriate collection available to keep track of opened files; if you want uniqueness use a set, not a list:



           HashSet<string> openedFiles = new HashSet<string>();

          public static bool TryFirstRead(
          string path,
          out string result)
          {
          if (openedFiles.Add(path))
          {
          result = File.ReadAllText(path);
          return true;
          }

          result = null;
          return false;
          }


          Also, I’d avoid throwing vexing exceptions. Give the consumer a friendly way to know if the file was read or not, don’t make them end up having to use exceptions as a flow control mechanism.






          share|improve this answer



























            up vote
            0
            down vote













            Michael’s answer is the way to go here but it can be improved using the more appropriate collection available to keep track of opened files; if you want uniqueness use a set, not a list:



             HashSet<string> openedFiles = new HashSet<string>();

            public static bool TryFirstRead(
            string path,
            out string result)
            {
            if (openedFiles.Add(path))
            {
            result = File.ReadAllText(path);
            return true;
            }

            result = null;
            return false;
            }


            Also, I’d avoid throwing vexing exceptions. Give the consumer a friendly way to know if the file was read or not, don’t make them end up having to use exceptions as a flow control mechanism.






            share|improve this answer

























              up vote
              0
              down vote










              up vote
              0
              down vote









              Michael’s answer is the way to go here but it can be improved using the more appropriate collection available to keep track of opened files; if you want uniqueness use a set, not a list:



               HashSet<string> openedFiles = new HashSet<string>();

              public static bool TryFirstRead(
              string path,
              out string result)
              {
              if (openedFiles.Add(path))
              {
              result = File.ReadAllText(path);
              return true;
              }

              result = null;
              return false;
              }


              Also, I’d avoid throwing vexing exceptions. Give the consumer a friendly way to know if the file was read or not, don’t make them end up having to use exceptions as a flow control mechanism.






              share|improve this answer














              Michael’s answer is the way to go here but it can be improved using the more appropriate collection available to keep track of opened files; if you want uniqueness use a set, not a list:



               HashSet<string> openedFiles = new HashSet<string>();

              public static bool TryFirstRead(
              string path,
              out string result)
              {
              if (openedFiles.Add(path))
              {
              result = File.ReadAllText(path);
              return true;
              }

              result = null;
              return false;
              }


              Also, I’d avoid throwing vexing exceptions. Give the consumer a friendly way to know if the file was read or not, don’t make them end up having to use exceptions as a flow control mechanism.







              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Nov 10 at 15:24

























              answered Nov 10 at 15:18









              InBetween

              24.9k33967




              24.9k33967
























                  up vote
                  0
                  down vote













                  I didn't understand although if you want to replace a value from another list.
                  You can use the list index to create a new list with the values which you removed.
                  String list1 = {"hi", "hello", "World"};
                  String list2 = {"bye", "goodbye", "World"};
                  List1[1] = list2[1];






                  share|improve this answer

























                    up vote
                    0
                    down vote













                    I didn't understand although if you want to replace a value from another list.
                    You can use the list index to create a new list with the values which you removed.
                    String list1 = {"hi", "hello", "World"};
                    String list2 = {"bye", "goodbye", "World"};
                    List1[1] = list2[1];






                    share|improve this answer























                      up vote
                      0
                      down vote










                      up vote
                      0
                      down vote









                      I didn't understand although if you want to replace a value from another list.
                      You can use the list index to create a new list with the values which you removed.
                      String list1 = {"hi", "hello", "World"};
                      String list2 = {"bye", "goodbye", "World"};
                      List1[1] = list2[1];






                      share|improve this answer












                      I didn't understand although if you want to replace a value from another list.
                      You can use the list index to create a new list with the values which you removed.
                      String list1 = {"hi", "hello", "World"};
                      String list2 = {"bye", "goodbye", "World"};
                      List1[1] = list2[1];







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 11 at 6:16









                      Yuval Ktz

                      11




                      11






















                          up vote
                          0
                          down vote













                          I would suggest such way:



                          public static List<string> openedFiles = new List<string>();
                          public static string ReadFileAndAddToOpenedList(string path)
                          {
                          if (openedFiles.Contains(path))
                          throw new Exception("File already opened");
                          // Instead of throwing exception you could for example just log this or do something else, like:
                          // Consolle.WriteLine("File already opened");
                          else
                          {
                          openedFiles.Add(path);
                          return File.ReadAllText(path);
                          }
                          }


                          The idea is - on every file read, add file to list, so you can check every time you try read file, if it was already read (or opened). If it is, throw exception (or do something else). Else read a file.






                          share|improve this answer



























                            up vote
                            0
                            down vote













                            I would suggest such way:



                            public static List<string> openedFiles = new List<string>();
                            public static string ReadFileAndAddToOpenedList(string path)
                            {
                            if (openedFiles.Contains(path))
                            throw new Exception("File already opened");
                            // Instead of throwing exception you could for example just log this or do something else, like:
                            // Consolle.WriteLine("File already opened");
                            else
                            {
                            openedFiles.Add(path);
                            return File.ReadAllText(path);
                            }
                            }


                            The idea is - on every file read, add file to list, so you can check every time you try read file, if it was already read (or opened). If it is, throw exception (or do something else). Else read a file.






                            share|improve this answer

























                              up vote
                              0
                              down vote










                              up vote
                              0
                              down vote









                              I would suggest such way:



                              public static List<string> openedFiles = new List<string>();
                              public static string ReadFileAndAddToOpenedList(string path)
                              {
                              if (openedFiles.Contains(path))
                              throw new Exception("File already opened");
                              // Instead of throwing exception you could for example just log this or do something else, like:
                              // Consolle.WriteLine("File already opened");
                              else
                              {
                              openedFiles.Add(path);
                              return File.ReadAllText(path);
                              }
                              }


                              The idea is - on every file read, add file to list, so you can check every time you try read file, if it was already read (or opened). If it is, throw exception (or do something else). Else read a file.






                              share|improve this answer














                              I would suggest such way:



                              public static List<string> openedFiles = new List<string>();
                              public static string ReadFileAndAddToOpenedList(string path)
                              {
                              if (openedFiles.Contains(path))
                              throw new Exception("File already opened");
                              // Instead of throwing exception you could for example just log this or do something else, like:
                              // Consolle.WriteLine("File already opened");
                              else
                              {
                              openedFiles.Add(path);
                              return File.ReadAllText(path);
                              }
                              }


                              The idea is - on every file read, add file to list, so you can check every time you try read file, if it was already read (or opened). If it is, throw exception (or do something else). Else read a file.







                              share|improve this answer














                              share|improve this answer



                              share|improve this answer








                              edited Nov 11 at 13:54

























                              answered Nov 10 at 14:20









                              Michał Turczyn

                              13.5k132039




                              13.5k132039






















                                  up vote
                                  0
                                  down vote













                                  You could instead of making it a string list use your own class





                                  public class MyFile
                                  {
                                  public string Name;
                                  public bool isOpen;

                                  public MyFile(string name)
                                  {
                                  Name = name;
                                  isOpen = false;
                                  }
                                  }

                                  List<MyFile> lsf = new List<MyFile>()
                                  {
                                  new MyFile("test0"),
                                  new MyFile("test1"),
                                  new MyFile("test2"),
                                  new MyFile("test3"),
                                  new MyFile("test4")
                                  };


                                  Than when you read the file set isOpen to true



                                  MyFile[someIndex].isOpen = true;


                                  and later you can check this



                                  // E.g. skip in a loop
                                  if(MyFile[someIndex]) continue;


                                  You could than also use Linq in order to get a list of only unread files:



                                  var unreadFiles = lsf.Select(f => f.Name).Where(file => !file.isOpen);





                                  share|improve this answer



























                                    up vote
                                    0
                                    down vote













                                    You could instead of making it a string list use your own class





                                    public class MyFile
                                    {
                                    public string Name;
                                    public bool isOpen;

                                    public MyFile(string name)
                                    {
                                    Name = name;
                                    isOpen = false;
                                    }
                                    }

                                    List<MyFile> lsf = new List<MyFile>()
                                    {
                                    new MyFile("test0"),
                                    new MyFile("test1"),
                                    new MyFile("test2"),
                                    new MyFile("test3"),
                                    new MyFile("test4")
                                    };


                                    Than when you read the file set isOpen to true



                                    MyFile[someIndex].isOpen = true;


                                    and later you can check this



                                    // E.g. skip in a loop
                                    if(MyFile[someIndex]) continue;


                                    You could than also use Linq in order to get a list of only unread files:



                                    var unreadFiles = lsf.Select(f => f.Name).Where(file => !file.isOpen);





                                    share|improve this answer

























                                      up vote
                                      0
                                      down vote










                                      up vote
                                      0
                                      down vote









                                      You could instead of making it a string list use your own class





                                      public class MyFile
                                      {
                                      public string Name;
                                      public bool isOpen;

                                      public MyFile(string name)
                                      {
                                      Name = name;
                                      isOpen = false;
                                      }
                                      }

                                      List<MyFile> lsf = new List<MyFile>()
                                      {
                                      new MyFile("test0"),
                                      new MyFile("test1"),
                                      new MyFile("test2"),
                                      new MyFile("test3"),
                                      new MyFile("test4")
                                      };


                                      Than when you read the file set isOpen to true



                                      MyFile[someIndex].isOpen = true;


                                      and later you can check this



                                      // E.g. skip in a loop
                                      if(MyFile[someIndex]) continue;


                                      You could than also use Linq in order to get a list of only unread files:



                                      var unreadFiles = lsf.Select(f => f.Name).Where(file => !file.isOpen);





                                      share|improve this answer














                                      You could instead of making it a string list use your own class





                                      public class MyFile
                                      {
                                      public string Name;
                                      public bool isOpen;

                                      public MyFile(string name)
                                      {
                                      Name = name;
                                      isOpen = false;
                                      }
                                      }

                                      List<MyFile> lsf = new List<MyFile>()
                                      {
                                      new MyFile("test0"),
                                      new MyFile("test1"),
                                      new MyFile("test2"),
                                      new MyFile("test3"),
                                      new MyFile("test4")
                                      };


                                      Than when you read the file set isOpen to true



                                      MyFile[someIndex].isOpen = true;


                                      and later you can check this



                                      // E.g. skip in a loop
                                      if(MyFile[someIndex]) continue;


                                      You could than also use Linq in order to get a list of only unread files:



                                      var unreadFiles = lsf.Select(f => f.Name).Where(file => !file.isOpen);






                                      share|improve this answer














                                      share|improve this answer



                                      share|improve this answer








                                      edited Nov 11 at 19:54

























                                      answered Nov 10 at 14:31









                                      derHugo

                                      3,87421027




                                      3,87421027






























                                          draft saved

                                          draft discarded




















































                                          Thanks for contributing an answer to Stack Overflow!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid



                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.


                                          To learn more, see our tips on writing great answers.





                                          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                                          Please pay close attention to the following guidance:


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid



                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.


                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function () {
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239755%2fban-a-variable-from-a-list-with-a-ban-list%23new-answer', 'question_page');
                                          }
                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown







                                          這個網誌中的熱門文章

                                          Tangent Lines Diagram Along Smooth Curve

                                          Yusuf al-Mu'taman ibn Hud

                                          Zucchini